溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop 部署之 Hive (五)

發(fā)布時間:2020-07-07 08:20:14 來源:網(wǎng)絡 閱讀:915 作者:wzlinux 欄目:大數(shù)據(jù)

一、Hive 簡介

1、什么是 Hive

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

Hadoop 部署之 Hive (五)

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線程,內存64G => 128G

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

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

  • 缺點:

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

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

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

4、Hive 的架構

Hadoop 部署之 Hive (五)

二、Hive 安裝

1、MySQL 安裝(datanode01)

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

# 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,修改內容如下:

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,修改內容為如下:

<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運行時結構化日志路徑</description>
   </property>

   <property>
     <name>hive.hwi.war.file</name>
     <value>lib/hive-hwi-2.1.1.war</value>
     <description>HWI war文件路徑, 與 ${HIVE_HOME}相關. </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驅動名</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、配置權限(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
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI