Hadoop部署之Hive(五)

一、Hive 簡介

1、什么是 Hive

  • Hive 由 Facebook 實現(xiàn)并開源,是基于 Hadoop 的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)映射為一張數(shù)據(jù)庫表,并提供 HQL(Hive SQL)查詢功能,底層數(shù)據(jù)是存儲在 HDFS 上。
  • Hive 的本質(zhì)是將 SQL 語句轉(zhuǎn)換為 MapReduce 任務運行,使不熟悉 MapReduce 的用戶很方便地利用 HQL 處理和計算 HDFS 上的結(jié)構(gòu)化的數(shù)據(jù),適用于離線的批量數(shù)據(jù)計算。
  • Hive 依賴于 HDFS 存儲數(shù)據(jù),Hive 將 HQL 轉(zhuǎn)換成 MapReduce 執(zhí)行,所以說 Hive 是基于 Hadoop 的一個數(shù)據(jù)倉庫工具,實質(zhì)就是一款基于 HDFS 的 MapReduce 計算框架,對存儲在 HDFS 中的數(shù)據(jù)進行分析和管理。

Hadoop 部署之 Hive (五)

創(chuàng)新互聯(lián)網(wǎng)絡公司擁有10年的成都網(wǎng)站開發(fā)建設經(jīng)驗,1000+客戶的共同信賴。提供成都做網(wǎng)站、成都網(wǎng)站設計、網(wǎng)站開發(fā)、網(wǎng)站定制、買友情鏈接、建網(wǎng)站、網(wǎng)站搭建、自適應網(wǎng)站建設、網(wǎng)頁設計師打造企業(yè)風格,提供周到的售前咨詢和貼心的售后服務

2、為什么使用 Hive

直接使用 MapReduce 所面臨的問題:

1、人員學習成本太高

2、項目周期要求太短

3、MapReduce實現(xiàn)復雜查詢邏輯開發(fā)難度太大

為什么要使用 Hive:

1、更友好的接口:操作接口采用類 SQL 的語法,提供快速開發(fā)的能力

2、更低的學習成本:避免了寫 MapReduce,減少開發(fā)人員的學習成本

3、更好的擴展性:可自由擴展集群規(guī)模而無需重啟服務,還支持用戶自定義函數(shù)

3、Hive 的特點

  • 優(yōu)點:

1、可擴展性,橫向擴展,Hive 可以自由的擴展集群的規(guī)模,一般情況下不需要重啟服務 橫向擴展:通過分擔壓力的方式擴展集群的規(guī)模 縱向擴展:一臺服務器cpu i7-6700k 4核心8線程,8核心16線程,內(nèi)存64G => 128G

2、延展性,Hive 支持自定義函數(shù),用戶可以根據(jù)自己的需求來實現(xiàn)自己的函數(shù)

3、良好的容錯性,可以保障即使有節(jié)點出現(xiàn)問題,SQL 語句仍可完成執(zhí)行

  • 缺點:

1、Hive 不支持記錄級別的增刪改操作,但是用戶可以通過查詢生成新表或者將查詢結(jié) 果導入到文件中(當前選擇的 hive-2.3.2 的版本支持記錄級別的插入操作)

2、Hive 的查詢延時很嚴重,因為 MapReduce Job 的啟動過程消耗很長時間,所以不能 用在交互查詢系統(tǒng)中。

3、Hive 不支持事務(因為不沒有增刪改,所以主要用來做 OLAP(聯(lián)機分析處理),而 不是 OLTP(聯(lián)機事務處理),這就是數(shù)據(jù)處理的兩大級別)。

4、Hive 的架構(gòu)

Hadoop 部署之 Hive (五)

二、Hive 安裝

1、MySQL 安裝(datanode01)

Hive 的元數(shù)據(jù)存儲在 RDBMS 中,除元數(shù)據(jù)外的其它所有數(shù)據(jù)都基于 HDFS 存儲。默認情 況下,Hive 元數(shù)據(jù)保存在內(nèi)嵌的 Derby 數(shù)據(jù)庫中,只能允許一個會話連接,只適合簡單的 測試。實際生產(chǎn)環(huán)境中不適用,為了支持多用戶會話,則需要一個獨立的元數(shù)據(jù)庫,使用 MySQL 作為元數(shù)據(jù)庫,Hive 內(nèi)部對 MySQL 提供了很好的支持。

yum install mariadb-server

2、MySQL 啟動

啟動數(shù)據(jù)庫

systemctl start mariadb
systemctl enable mariadb

3、Hive 下載安裝

# 下載安裝包
wget https://mirrors.aliyun.com/apache/hive/hive-2.3.3/apache-hive-2.3.3-bin.tar.gz

# 解壓安裝包
tar xf apache-hive-2.3.3-bin.tar.gz
mv apache-hive-2.3.3-bin /usr/local/hive

# 創(chuàng)建目錄
mkdir -p /home/hive/{log,tmp,job}

4、配置 Hive 環(huán)境變量

編輯文件/etc/profile.d/hive.sh,修改為如下內(nèi)容:

# HIVE ENV
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

使HIVE環(huán)境變量生效。

source /etc/profile.d/hive.sh

三、Hive 配置

1、配置 metastore(datanode01)

mysql> grant all privileges on *.* to 'hive'@'%' identified by 'hive123456' with grant option;
mysql> grant all privileges on *.* to 'hive'@'datanode01' identified by 'hive123456' with grant option;

mysql> grant all privileges on *.* to 'thbl_prd_hive'@'%' identified by 'hive123456' with grant option;
mysql> grant all privileges on *.* to 'hive'@'localhost' identified by 'hive123456' with grant option;
mysql> grant all privileges on *.* to 'thbl_prd_hive'@'localhost' identified by 'hive123456' with grant option;
mysql> flush privileges;

2、配置 jdbc(datanode01)

wget http://mirrors.163.com/mysql/Downloads/Connector-J/mysql-connector-java-5.1.45.tar.gz 
tar xf mysql-connector-java-5.1.45.tar.gz
cp mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jar /usr/local/hive/lib/

3、備份template配置文件(namenode01)

cd /usr/local/hive/conf
mkdir template
mv *.template template

# 安排配置文件
cp template/hive-exec-log4j2.properties.template hive-exec-log4j2.properties
cp template/hive-log4j2.properties.template hive-log4j2.properties
cp template/hive-default.xml.template hive-default.xml
cp template/hive-env.sh.template hive-env.sh

4、配置 hive-env.sh(namenode01)

編輯文件/usr/local/hive/conf/hive-env.sh,修改內(nèi)容如下:

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

5、配置數(shù)據(jù)倉庫 hive-site.xml(namenode01)

編輯文件/usr/local/hive/conf/hive-site.xml,修改內(nèi)容為如下:

<configuration>
   <property>
     <name>hive.exec.local.scratchdir</name>
     <value>/home/hive/job</value>
     <description>hive的本地臨時目錄,用來存儲不同階段的map/reduce的執(zhí)行計劃</description>
   </property>

   <property>
     <name>hive.downloaded.resources.dir</name>
     <value>/home/hive/tmp/${hive.session.id}_resources</value>
     <description>hive下載的本地臨時目錄</description>
   </property>

   <property>
     <name>hive.querylog.location</name>
     <value>/home/hive/log/${system:user.name}</value>
     <description>hive運行時結(jié)構(gòu)化日志路徑</description>
   </property>

   <property>
     <name>hive.hwi.war.file</name>
     <value>lib/hive-hwi-2.1.1.war</value>
     <description>HWI war文件路徑, 與 ${HIVE_HOME}相關(guān). </description>
   </property>

   <property>
     <name>hive.server2.logging.operation.log.location</name>
     <value>/home/hive/log/${system:user.name}/operation_logs</value>
     <description>日志開啟時的,操作日志路徑</description>
   </property>

<!--遠程mysql元數(shù)據(jù)庫-->
   <property>
     <name>hive.metastore.local</name>
     <value>false</value>
   </property>

  <property>
    <name>datanucleus.schema.autoCreateAll</name>
    <value>true</value>
    <description>啟動時自動創(chuàng)建必要的schema</description>
  </property>

  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/hive/warehouse</value>
    <description>Hive數(shù)據(jù)倉庫在HDFS中的路徑</description>
  </property>

   <property>
     <name>hive.metastore.uris</name>
     <value>thrift://datanode01:9083</value>
     <description>遠程metastore的 Thrift URI,以供metastore客戶端連接metastore服務端</description>
   </property>

<!--mysql元數(shù)據(jù)庫配置-->
   <property>
     <name>javax.jdo.option.ConnectionDriverName</name>
     <value>com.mysql.jdbc.Driver</value>
     <description>JDBC驅(qū)動名</description>
   </property>

   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc:mysql://datanode01:3306/hive_db?createDatabaseIfNotExist=true</value>
     <description>JDBC連接名</description>
   </property>

   <property>
     <name>javax.jdo.option.ConnectionUserName</name>
     <value>hive</value>
     <description>連接metastore數(shù)據(jù)庫的用戶名</description>
   </property>

   <property>
     <name>javax.jdo.option.ConnectionPassword</name>
     <value>hive123456</value>
     <description>連接metastore數(shù)據(jù)庫的密碼</description>
   </property>

   <property>
     <name>hive.metastore.schema.verification</name>
     <value>false</value>
     <description>強制metastore schema的版本一致性</description>
   </property>
</configuration>

6、配置權(quán)限(namenode01)

scp /usr/local/hive/conf/* datanode01:/usr/local/hive/conf/
chmod 755 /usr/local/hive/conf/*

四、Hive 啟動

1、在namenode01,啟動hiveserver2

hive --service hiveserver2 &

2、在datanode01,啟動metastore

hive --service metastore &

五、Hive 檢查

1、JPS

[root@namenode01 ~]# jps
14512 NameNode
14786 ResourceManager
21348 RunJar
15894 HMaster
22047 Jps

[root@datanode01 ~]# jps
3509 DataNode
3621 NodeManager
1097 QuorumPeerMain
9930 RunJar
3935 HRegionServer
10063 Jps

2、hive shell

[root@namenode01 ~]# hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Logging initialized using configuration in file:/usr/local/hive/conf/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive> show tables;
OK
Time taken: 0.833 seconds

本文題目:Hadoop部署之Hive(五)
本文地址:http://bm7419.com/article48/ijpjep.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、網(wǎng)站收錄標簽優(yōu)化、App開發(fā)、動態(tài)網(wǎng)站、響應式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司