Hive——第一章(安裝與配置)

基礎知識:

  • Hive簡介

  1. Hive 是一個基於Hadoop開源數據倉庫工具,用於存儲和處理海量結構化數據。 它把海量數據存儲於 hadoop 文件系統,而不是資料庫,但提供了一套類資料庫的數據存儲和處理機制,並採用 HQL (類 SQL )語言對這些數據進行自動化管理和處理。我們可以把 Hive 中海量結構化數據看成一個個的表,而實際上這些數據是分散式存儲在 HDFS 中的。 Hive 經過對語句進行解析和轉換,最終生成一系列基於 hadoop 的 map/reduce 任務,通過執行這些任務完成數據處理。

  2. Hive 誕生於 facebook 的日誌分析需求,面對海量的結構化數據, Hive 以較低的成本完成了以往需要大規模資料庫才能完成的任務,並且學習門檻相對較低,應用開發靈活而高效。

  • Hive特點
  1. 不想用程序語言開發MapReduce的朋友比如DB們,熟悉SQL的朋友可以使用Hive開離線的進行數據處理與分析工作。

  2. Hive現在適合在離線下進行數據的操作,就是說不適合在掛在真實的生產環境中進行實時的在線查詢或操作,因為一個字「慢」。

  3. 起源於FaceBook,Hive在Hadoop中扮演數據倉庫的角色。建立在Hadoop集群的最頂層,對存儲在Hadoop群上的數據提供類SQL的介面進行操作。你可以用 HiveQL進行select,join,等等操作。

  4. 如果你有數據倉庫的需求並且你擅長寫SQL並且不想寫MapReduce jobs就可以用Hive代替。

相關下載:

  • apache-hive-1.2.1-bin.tar.gz(下載地址)

1.1、Hive安裝與配置

1、準備

在部署節點中選擇一個數據節點,作為hive用的節點。(本實驗使用slave1

注意:jdk選擇jdk-8u112-linux-x64.tar.gz

2、安裝MySQL伺服器

相關命令:

  1. sudo apt-get install mysql-server

3、安裝MySQL客戶端

相關命令:

  1. sudo apt-get install mysql-client

  2. sudo apt-get install libmysqlclient-dev

4、資料庫操作

1)安裝hive,之前,先在mysql上創建一個hive,資料庫,並在hive資料庫中建立表user

相關命令:

  1. mysql -u root -p

  2. create database hive;

  3. use hive;

  4. create table user(Host char(20),User char(10),Password char(20));

2)進入mysql,賦予許可權,密碼自己改

相關命令:

  1. insert into user(Host,User,Password) values("localhost","hive","hive");

  2. FLUSH PRIVILEGES;

  3. GRANT ALL PRIVILEGES ON *.* TO hive@localhost IDENTIFIED BY hive;

  4. FLUSH PRIVILEGES;

5、解壓hive安裝包之後,配置環境

相關命令與內容:

  1. sudo tar -xzvf apache-hive-1.2.1-bin.tar.gz -C /home/hadoop

  2. sudo gedit /etc/profile

  3. ------------------------------內 容------------------------------

  4. #hive

  5. export HIVE_HOME=/home/hadoop/apache-hive-1.2.1-bin

  6. export PATH=$PATH:$HIVE_HOME/bin

  7. ------------------------------內 容------------------------------

  8. source /etc/profile

6、修改hive/conf下的幾個template模板

相關命令:

  1. sudo cp hive-env.sh.template hive-env.sh

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

7、配置hive-env.sh文件,指定HADOOP_HOME

相關內容:

  1. HADOOP_HOME=/usr/local/hadoop

8、修改hive-site.xml文件,指定MySQL資料庫驅動、資料庫名、用戶名及密碼

相關內容:

  1. <property>

  2. <name>javax.jdo.option.ConnectionURL</name>

  3. <value>jdbc:mysql://localhost:3306/hive_metadata?createDatabaseIfNotExist=true</value>

  4. <description>JDBC connect string for a JDBC metastore</description>

  5. </property>

  6. <property>

  7. <name>javax.jdo.option.ConnectionDriverName</name>

  8. <value>com.mysql.jdbc.Driver</value>

  9. <description>Driver class name for a JDBC metastore</description>

  10. </property>

  11. <property>

  12. <name>javax.jdo.option.ConnectionUserName</name>

  13. <value>hive</value>

  14. <description>Username to use against metastore database</description>

  15. </property>

  16. <property>

  17. <name>javax.jdo.option.ConnectionPassword</name>

  18. <value>hive</value>

  19. <description>password to use against metastore database</description>

  20. </property>

  21. <property>

  22. <name>hive.exec.local.scratchdir</name>

  23. <value>/home/hive/scratchdir</value>

  24. <description>Local scratch space for Hive jobs</description>

  25. </property>

  26. <property>

  27. <name>hive.downloaded.resources.dir</name>

  28. <value>/home/hive/resourcesdir</value>

  29. <description>Temporary local directory for added resources in the remote file system.</description>

  30. </property>

  31. <property>

  32. <name>hive.querylog.location</name>

  33. <value>/home/hive/querylog</value>

  34. <description>Location of Hive run time structured log file</description>

  35. </property>

  36. <property>

  37. <name>hive.server2.logging.operation.log.location</name>

  38. <value>/home/hive/operation_logs</value>

  39. <description>Top level directory where operation logs are stored if logging functionality is enabled</description>

  40. </property>

9、創建目錄並更改用戶

相關命令:

  1. sudo mkdir -p /home/hive/scratchdir

  2. sudo mkdir -p /home/hive/resourcesdir

  3. sudo mkdir -p /home/hive/querylog

  4. sudo mkdir -p /home/hive/operation_logs

  5. sudo chown -R hadoop.hadoop /home/hive

  6. sudo chown -R hadoop.hadoop /home/hadoop/apache-hive-1.2.1-bin

10、修改hive/bin下的hive-config.sh文件,設置JAVA_HOME,HADOOP_HOME

相關內容:

  1. export JAVA_HOME=/usr/lib/jdk1.8.0_112/

  2. export HADOOP_HOME=/usr/local/hadoop

  3. export HIVE_HOME=/home/hadoop/apache-hive-1.2.1-bin

11、下載mysql-connector-java-5.1.27-bin.jar文件,並放到$HIVE_HOME/lib目錄下

12、在HDFS中創建/tmp和/user/hive/warehouse並設置許可權(master節點)

相關命令:

  1. hadoop fs -mkdir /tmp

  2. hadoop fs -mkdir -p /user/hive/warehouse

  3. hadoop fs -chmod g+w /tmp

  4. hadoop fs -chmod g+w /user/hive/warehouse

13、啟動hive(注意:可以在/etc/profile或/etc/bash.bashrc配置,重啟計算機後直接hive)

相關命令:

  1. cd $HIVE_HOME/bin

  2. ./hive

報錯:[ERROR] Terminal initialization failed; falling back to unsupported

java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

hadoop的版本是2.6.0,hive的版本是1.2.1,$HIVE_HOME/lib目錄下的jline-2.12.jar比$HADOOP_HOME/share/hadoop/yarn/lib下的jline-0.9.94.jar版本高,版本不一致導致。

解決方法:拷貝hive中的jline-2.12.jar到$HADOOP_HOME/share/hadoop/yarn/lib下,刪除jline-0.9.94.jar,並重啟hadoop即可。


推薦閱讀:

他憑什麼打動12位目光犀利的投資人?
Kaggle 數據清洗挑戰 Day 5 - 處理不一致數據
明略數據成長之路
【線上直播】數據很重要,Storm幫你現在就要
農業真正的農業掌握在AI手中

TAG:大數據 | Hadoop | Hive |