基於Hadoop集羣的Hive安裝配置(Derby數據庫)

    Hive是一個數據倉庫基礎工具在Hadoop中用來處理結構化數據,提供簡單的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行(具體的Hive架構你們自行搜索)。接下來主要講下Hadoop集羣下Hive的安裝配置,並搭載Derby數據庫(一款小巧的數據庫,用於測試,不推薦開發使用,具體你們自行百度),進行一些基本的數據庫操做,好了,讓咱們開始吧。java

    1、環境:一樣的啓用三個節點,分別是虛擬機slave01,slave02,slave03,基於以前已經搭建好的環境,包括JDK、Zookeeper、Hadoopmysql

    2、Hive、Derby配置(自行解壓)sql

    這裏推薦下載版本較低的Hive,本人經驗教訓告訴你們:高版本易出現問題,好比說個人Hadoop 2.7.6,下載Hive 2.2.0 安裝配置後就出現了不少問題,體驗極差,像 報錯爲:數據庫

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

 就屬於版本太高致使的,因此,你們儘可能下載低版本的。apache

    (1)設置Hive、Derby環境變量    vim

vim /etc/profile

    添加HIVE_HOME、DERBY_HOME,以下:架構

JAVA_HOME=/usr/java/jdk1.8.0_161
JRE_HOME=/usr/java/jdk1.8.0_161/jre
SCALA_HOME=/usr/local/scala
HADOOP_HOME=/usr/local/hadoop
SPARK_HOME=/usr/local/spark
ZOOKEEPER_HOME=/usr/local/zookeeper
HBASE_HOME=/usr/local/hbase
KAFKA_HOME=/usr/local/kafka
HIVE_HOME=/usr/local/hive
DERBY_HOME=/usr/local/derby
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin:$KAFKA_HOME/bin:$HIVE_HOME/bin:$DERBY_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbyclient.jar:$DERBY_HOME/lib/derbytools.jar:$DERBY_HOME/lib/derbynet.jar
export JAVA_HOME JRE_HOME SCALA_HOME HADOOP_HOME SPARK_HOME ZOOKEEPER_HOME HBASE_HOME KAFKA_HOME HIVE_HOME DERBY_HOME PATH CLASSPATH

    使文件生效,運行命令:編輯器

source /etc/profile

    (2)修改Hive文件夾conf目錄下配置文件 hive-env.sh 工具

    複製一份 hive-env.sh.template 重命名爲 hive-env.sh:oop

cp hive-env.sh.template hive-env.sh

    修改 hive-env.sh 內容:

export HIVE_CONF_DIR=/usr/local/hive/conf
export HADOOP_HOME=/usr/local/hadoop

    (3)配置Hive的Metastore

    配置Metastore意味着,指定要Hive的數據庫存儲,一樣,Hive/conf目錄下,複製一份 hive-default.xml.template重命名爲 hive-site.xml:

cp hive-default.xml.template hive-site.xml

    修改 hive-site.xml 內容,因爲裏面原內容較多,可經過命令gedit以編輯器模式打開:

gedit hive-site.xml

    刪除全部的配置,替換爲:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>

<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/usr/local/hive/warehouse</value>
</property>
</configuration>

    其中,<value>jdbc:derby:;databaseName=metastore_db;create=true</value> 表示使用嵌入式的derby,create爲true表示自動建立數據庫,數據庫名爲metastore_db,另外一種客服模式你們感興趣的能夠本身看下;<value>org.apache.derby.jdbc.EmbeddedDriver</value> 表示使用嵌入式的derby;warehouse文件夾手動建立。

    3、驗證Hive

    運行Hive以前,須要建立/tmp文件夾在HDFS獨立的Hive文件夾,並給這些新建立的文件夾寫權限:

[hadoop@slave01 bin]$ hadoop fs -mkdir /tmp
[hadoop@slave01 bin]$ hadoop fs -chmod g+w /tmp

    啓動Hive前,先啓動Hadoop集羣,注意關閉防火牆,再而後啓動Hive,首次啓動可能會出現一個報錯提示:

沒法訪問/usr/local/spark/lib/spark-assembly-*.jar: 沒有那個文件或目錄

    雖然過了幾秒後Hive仍然成功啓動,但這個報錯信息是怎麼回事呢?

    緣由:spark2之後,原有lib目錄下的大JAR包被分散成多個小JAR包,原來的spark-assembly-*.jar已經不存在,因此hive沒有辦法找到這個JAR包。

    解決辦法:進入hive安裝路徑下的bin目錄下,編輯hive,如經過編輯器打開:gedit hive,找到下面的Shell腳本命令:

sparkAssemblyPath=`ls ${SPARK_HOME}/lib/spark-assembly-*.jar`

    修改成:

sparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar`

    好了,讓咱們再次啓動Hive,成功啓動以下:

[hadoop@slave01 bin]$ hive

Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive>

    以上就是基於Hadoop集羣Hive+derby的安裝配置過程,固然對於數據庫的選擇好比mysql配置過程相似,你們自行參考資料。接下來就是Hive對數據庫的操做了,敬請期待吧!

相關文章
相關標籤/搜索