日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop集群搭建(八:Hive的安装配置)

發布時間:2023/11/27 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop集群搭建(八:Hive的安装配置) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗

目的

要求

?

目的:

(1)掌握數據倉庫工具Hive的安裝和配置;

要求:

  1. 完成Hive工具的安裝和配置;
  2. Hive工具能夠正常啟動運行;
  3. Hive控制臺命令能夠正常使用;
  4. 能夠正常操作數據庫、表、數據;

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  1. 五臺獨立PC式虛擬機;
  2. 主機之間有有效的網絡連接;
  3. 每臺主機內存2G以上,磁盤50G;
  4. 所有主機上安裝CentOS7-64位操作系統;
  5. 所有主機已完成靜態網絡地址、主機名、主機地址映射的配置;
  6. 已完成Hadoop平臺的搭建;
  7. 已完成MySQL數據庫平臺的搭建;

?

軟件版本:

???? ???選用Hive的2.1.1版本,軟件包名apache-hive-2.1.1-bin.tar.gz;

?

依賴軟件:

??????? *Hive工具使用JDBC方式連接MySQL數據庫,需要用到MySQL數據庫連接工具軟件,選用該軟件的5.1.42版本,軟件包名mysql-connector-java-5.1.42-bin.jar;

?

實驗內容

步驟一:Hive工具安裝配置

★ Hive安裝過程的所有操作步驟都需要使用admin用戶進行。

★本項步驟只在集群中Cluster-01主機上進行操作即可。

1、把相關軟件包apache-hive-2.1.1-bin.tar.gz和mysql-connector-java-5.1.42-bin.jar上傳到admin用戶家目錄的新建“setups”目錄下;

2、創建用于存放Hive相關文件的目錄,并進入該目錄,創建Hive的本地臨時文件目錄“tmp”,并將軟件包解壓解包到“hive”目錄下;

?????????? 命令:

?????????????? ?$mkdir ~/hive

??????????????? $cd ~/hive

??????????????? $mkdir tmp

??????????????? $tar -xzf ~/setups/apache-hive-2.1.1-bin.tar.gz

3、配置Hive相關的環境變量,給配置文件進行修改,并在文件末尾添加以下內容;

???? 命令:

????????? $vi ~/.bash_profile

???? 寫入內容:

#hive environment

HIVE_HOME=/home/admin/hive/apache-hive-2.1.1-bin

PATH=$HIVE_HOME/bin:$PATH

export HIVE_HOME PATH

??

?

4、生效環境變量,并查看驗證;

????? 命令:

?????????? $source ~/.bash_profile

?????????? $echo $HIVE_HOME

?????????? $echo $PATH

?

5、進入Hive的配置文件目錄,Hive的配置文件默認都被命名為了模板文件,需要對其進行拷貝重命名之后才能使用:

????? 命令:

? ? ? ? ? ?$ cp hive-env.sh.template hive-env.sh

?????????? $ cp hive-log4j2.properties.template ??hive-log4j2.properties

?????????? $ cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

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

6、對配置文件進行修改,找到相關配置項并對其值進行修改;

6.1、找到配置項“HADOOP_HOME”,該項用于指定Hadoop所在的路徑,將其值改為以下內容:

? ? ? ? HADOOP_HOME=/home/admin/hadoop/hadoop-2.7.3

6.2、找到配置項“HIVE_CONF_DIR”,該項用于指定Hive的配置文件所在的路徑,將其值改為以下內容:

? ? ? ? export

? ? ? ? HIVE_CONF_DIR=/home/admin/hive/apache-hive-2.1.1-bin/conf

?

6.3、找到配置項“HIVE_AUX_JARS_PATH”,該項用于指定Hive的lib文件所在的路徑,將其值改為以下內容:

export HIVE_AUX_JARS_PATH=/home/admin/hive/apache-hive-2.1.1-bin/lib

?

7、集群的啟動;

★ 該項的所有操作步驟使用專門用于集群的用戶admin進行。

★ 啟動HBase集群之前首先確保Zookeeper集群已被開啟狀態。(實驗5臺),Zookeeper的啟動需要分別在每個計算機的節點上手動啟動。如果家目錄下執行啟動報錯,則需要進入zookeeper/bin目錄執行啟動命令。

★ 啟動HBase集群之前首先確保Hadoop集群已被開啟狀態。 (實驗5臺)Hadoop只需要在主節點執行啟動命令。

a) 在集群中所有主機上使用命令“zkServer.sh status”查看該節點Zookeeper服務當前的狀態,若集群中只有一個“leader”節點,其余的均為“follower”節點,則集群的工作狀態正常。如果Zookeeper未啟動,則在集群中所有主機上使用命令“zkServer.sh start”啟動Zookeeper服務的腳本;

???? ???????????

b) 在主節點,查看Java進程信息,若有名為“NameNode”、“ResourceManager”的兩個進程,則表示Hadoop集群的主節點啟動成功。在每臺數據節點,若有名為“DataNode”和“NodeManager”的兩個進程,則表示Hadoop集群的數據節點啟動成功, 如果不存在以上三個進程,則在主節點使用此命令,啟動Hadoop集群。

主節點及備用主節點:

通信節點:

c) 確定Hadoop集群已啟動狀態,然后在主節點使用此命令,啟動HBase集群, 在集群中所有主機上使用命令“jps”;

8、在HDFS中分別創建Hive的臨時文件目錄“tmp”,在HDFS中分別創建Hive的數據存儲目錄“warehouse”,在HDFS中分別創建Hive的日志文件目錄“log”,添加三個目錄的用戶組寫權限;

???? 命令:

????????? $ hadoop fs -mkdir -p /user/hive/tmp

????????? $ hadoop fs -mkdir -p /user/hive/warehouse

????????? $ hadoop fs -mkdir -p /user/hive/log

????????? $ hadoop fs -chmod 777 /user/hive/tmp

????????? $ hadoop fs -chmod 777 /user/hive/warehouse

????????? $ hadoop fs -chmod 777 /user/hive/log

9、對配置文件hive-site.xml進行修改

找到下列標簽“<name>”所標識的屬性項名稱所在位置,修改其標簽“<value>”所標識的屬性值部分的內容:

<configuration><!-- 指定Hive的數據臨時文件存儲目錄,需要是位于HDFS上的目錄 --><property><name>hive.exec.scratchdir</name><value>/user/hive/tmp</value></property><!-- 指定Hive的數據存儲目錄,需要是位于HDFS上的目錄 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><!-- 指定Hive的日志文件目錄,需要是位于HDFS上的目錄--><property><name>hive.querylog.location</name><value>/user/hive/log</value><description>Location of Hive run time structured log file</description></property></configuration>

10、在MySQL數據庫SQL服務節點Cluster-04中創建一個數據庫“hive”用于存放Hive的元數據,該數據庫的用戶名和密碼均為“hive”,數據庫名、用戶名、密碼均可以自行設定,但需要與Hive配置文件中的內容相對應,連接MySQL數據庫;

??? ??命令:

?????????? $ mysql -hCluster-04 -uroot -pmysqlabc

在控制臺執行以下命令進行數據庫的創建:

CREATE DATABASE hive;(創建數據庫hive)

USE hive;(切換到新創建的hive數據庫)

CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';(創建數據庫用戶hive)

GRANT ALL ON hive.* TO 'hive'@'%';設置hive數據庫的訪問權限,hive用戶擁有所有操作權限并支持遠程訪問)

FLUSH PRIVILEGES;(刷新數據庫權限信息)

show databases;

quit;(退出MySQL數據庫控制臺)

11、添加MySQL連接的相關配置信息;

????? 命令:

?????????? $ vi ~/hive/apache-hive-2.1.1-bin/conf/hive-site.xml

??? 找到下列標簽“<name>”所標識的屬性項名稱所在位置,修改其標簽“<value>”所標識的屬性值部分的內容:

<configuration><!-- 指定Hive的日志文件目錄,需要是位于HDFS上的目錄 --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://Cluster-04:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value></property></configuration>

12、將MySQL的數據庫連接工具包添加到Hive的“lib”目錄下;

????? 命令:

?$ cp -v ~/setups/mysql-connector-java-5.1.42-bin.jar ~/hive/apache-hive-2.1.1-bin/lib

?

13、添加MySQL連接的相關配置信息;

????? 命令:

?????????? $ vi ~/hive/apache-hive-2.1.1-bin/conf/hive-site.xml

在編輯器中使用快捷鍵“:”進入到編輯器的命令模式,也稱為末行模式,然后使用命令“%s#${system:java.io.tmpdir}#/home/admin/hive/tmp#g”以及“%s#${system:user.name}#${user.name}#g”替換掉配置文件中的原有配置內容。

14、對Hive進行格式化;

????? 命令:

?????????? $ schematool -initSchema -dbType mysql

步驟二:Hive工具啟動和驗證

★ Hive安裝過程的所有操作步驟都需要使用admin用戶進行。

★本項步驟只在集群中Cluster-01主機上進行操作即可。

?

1、使用命令“hive”啟動Hive,啟動成功后能夠進入Hive的控制臺。

2、在控制臺中使用命令“show databases;”查看當前的數據庫列表。

3、在控制臺中使用命令“show functions;”查看Hive的功能函數。

4、在控制臺中使用命令“desc function sum;”或“desc function extended sum;”查看Hive的功能函數的詳細信息。

5、在控制臺中使用命令“quit;”或“exit;”退出Hive的控制臺。

?

出現的問題與解決方案

錯誤1、啟動hive : ls: cannot access/home/hadoop/spark-2.2.0-bin-hadoop2.6/lib/spark-assembly-*.jar: No such fileor directory問題

sxc@master ~]$ hivels: cannot access /software/spark/spark-2.2.0-bin-hadoop2.7/lib/spark-assembly-*.jar: No such file or directory17/11/27 13:12:56 WARN conf.HiveConf: HiveConf of name hive.metastore.local does not existLogging initialized using configuration in jar:file:/software/hive/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties

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

?

解決方法:

打開hive的安裝目錄下的bin目錄,找到hive文件

找到如下的位置

# add Spark assembly jar to the classpathif [[ -n "$SPARK_HOME" ]]thensparkAssemblyPath=`ls ${SPARK_HOME}/lib/spark-assembly-*.jar`CLASSPATH="${CLASSPATH}:${sparkAssemblyPath}"fi

原因:

spark升級到spark2以后,原有lib目錄下的大JAR包被分散成多個小JAR包,原來的spark-assembly-*.jar已經不存在,所以hive沒有辦法找到這個JAR包。

解決辦法:把紅色部分改為如下的樣子就可以了

? # add Spark assembly jar to the classpathif [[ -n "$SPARK_HOME" ]]thensparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar`CLASSPATH="${CLASSPATH}:${sparkAssemblyPath}"fi


? 知識點總結

HIVE和HBASE區別

1. 兩者分別是什么???

?Apache Hive是一個構建在Hadoop基礎設施之上的數據倉庫。通過Hive可以使用HQL語言查詢存放在HDFS上的數據。HQL是一種類SQL語言,這種語言最終被轉化為Map/Reduce. 雖然Hive提供了SQL查詢功能,但是Hive不能夠進行交互查詢--因為它只能夠在Haoop上批量的執行Hadoop。

?Apache HBase是一種Key/Value系統,它運行在HDFS之上。和Hive不一樣,Hbase的能夠在它的數據庫上實時運行,而不是運行MapReduce任務。Hive被分區為表格,表格又被進一步分割為列簇。列簇必須使用schema定義,列簇將某一類型列集合起來(列不要求schema定義)。例如,“message”列簇可能包含:“to”, ”from” “date”, “subject”, 和”body”. 每一個 key/value對在Hbase中被定義為一個cell,每一個key由row-key,列簇、列和時間戳。在Hbase中,行是key/value映射的集合,這個映射通過row-key來唯一標識。Hbase利用Hadoop的基礎設施,可以利用通用的設備進行水平的擴展。

2. 兩者的特點:

? Hive幫助熟悉SQL的人運行MapReduce任務。因為它是JDBC兼容的,同時,它也能夠和現存的SQL工具整合在一起。運行Hive查詢會花費很長時間,因為它會默認遍歷表中所有的數據。雖然有這樣的缺點,一次遍歷的數據量可以通過Hive的分區機制來控制。分區允許在數據集上運行過濾查詢,這些數據集存儲在不同的文件夾內,查詢的時候只遍歷指定文件夾(分區)中的數據。這種機制可以用來,例如,只處理在某一個時間范圍內的文件,只要這些文件名中包括了時間格式。

?HBase通過存儲key/value來工作。它支持四種主要的操作:增加或者更新行,查看一個范圍內的cell,獲取指定的行,刪除指定的行、列或者是列的版本。版本信息用來獲取歷史數據(每一行的歷史數據可以被刪除,然后通過Hbase compactions就可以釋放出空間)。雖然HBase包括表格,但是schema僅僅被表格和列簇所要求,列不需要schema。Hbase的表格包括增加/計數功能。

3. 限制

? Hive目前不支持更新操作。另外,由于hive在hadoop上運行批量操作,它需要花費很長的時間,通常是幾分鐘到幾個小時才可以獲取到查詢的結果。Hive必須提供預先定義好的schema將文件和目錄映射到列,并且Hive與ACID不兼容。

? HBase查詢是通過特定的語言來編寫的,這種語言需要重新學習。類SQL的功能可以通過Apache Phonenix實現,但這是以必須提供schema為代價的。另外,Hbase也并不是兼容所有的ACID特性,雖然它支持某些特性。最后但不是最重要的--為了運行Hbase,Zookeeper是必須的,zookeeper是一個用來進行分布式協調的服務,這些服務包括配置服務,維護元信息和命名空間服務。

4. 應用場景

? Hive適合用來對一段時間內的數據進行分析查詢,例如,用來計算趨勢或者網站的日志。Hive不應該用來進行實時的查詢。因為它需要很長時間才可以返回結果。

? Hbase非常適合用來進行大數據的實時查詢。Facebook用Hbase進行消息和實時的分析。它也可以用來統計Facebook的連接數。

5. 總結

? Hive和Hbase是兩種基于Hadoop的不同技術--Hive是一種類SQL的引擎,并且運行MapReduce任務,Hbase是一種在Hadoop之上的NoSQL 的Key/vale數據庫。當然,這兩種工具是可以同時使用的。就像用Google來搜索,用FaceBook進行社交一樣,Hive可以用來進行統計查詢,HBase可以用來進行實時查詢,數據也可以從Hive寫到Hbase,設置再從Hbase寫回Hive。

Hive環境安裝之瀏覽器訪問配置

1、下載hive-2.1.1-src.tar.gz

然后進入目錄${HIVE_SRC_HOME}/hwi/web,執行打包命令:

#jar -cvf hive-hwi-1.2.2.war *

2、得到hive-hwi-1.2.2.war文件,復制到hive下的lib目錄中;

3、修改hive的配置文件hive-site.xml;

4、啟動Hive的web;

?????? 命令:$hive –service hwi

?

5、通過web方式管理Hive;

總結

以上是生活随笔為你收集整理的Hadoop集群搭建(八:Hive的安装配置)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:Hadoop集群搭建(八:Hive的安装配置)