Hive——第一章(安裝與配置)
05-05
基礎知識:
推薦閱讀:
- Hive簡介
- Hive 是一個基於Hadoop的開源數據倉庫工具,用於存儲和處理海量結構化數據。 它把海量數據存儲於 hadoop 文件系統,而不是資料庫,但提供了一套類資料庫的數據存儲和處理機制,並採用 HQL (類 SQL )語言對這些數據進行自動化管理和處理。我們可以把 Hive 中海量結構化數據看成一個個的表,而實際上這些數據是分散式存儲在 HDFS 中的。 Hive 經過對語句進行解析和轉換,最終生成一系列基於 hadoop 的 map/reduce 任務,通過執行這些任務完成數據處理。
- Hive 誕生於 facebook 的日誌分析需求,面對海量的結構化數據, Hive 以較低的成本完成了以往需要大規模資料庫才能完成的任務,並且學習門檻相對較低,應用開發靈活而高效。
- Hive特點
- 不想用程序語言開發MapReduce的朋友比如DB們,熟悉SQL的朋友可以使用Hive開離線的進行數據處理與分析工作。
- Hive現在適合在離線下進行數據的操作,就是說不適合在掛在真實的生產環境中進行實時的在線查詢或操作,因為一個字「慢」。
- 起源於FaceBook,Hive在Hadoop中扮演數據倉庫的角色。建立在Hadoop集群的最頂層,對存儲在Hadoop群上的數據提供類SQL的介面進行操作。你可以用 HiveQL進行select,join,等等操作。
- 如果你有數據倉庫的需求並且你擅長寫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伺服器
相關命令:
- sudo apt-get install mysql-server
3、安裝MySQL客戶端
相關命令:
- sudo apt-get install mysql-client
- sudo apt-get install libmysqlclient-dev
4、資料庫操作
1)安裝hive,之前,先在mysql上創建一個hive,資料庫,並在hive資料庫中建立表user
相關命令:
- mysql -u root -p
- create database hive;
- use hive;
- create table user(Host char(20),User char(10),Password char(20));
2)進入mysql,賦予許可權,密碼自己改
相關命令:
- insert into user(Host,User,Password) values("localhost","hive","hive");
- FLUSH PRIVILEGES;
- GRANT ALL PRIVILEGES ON *.* TO hive@localhost IDENTIFIED BY hive;
- FLUSH PRIVILEGES;
5、解壓hive安裝包之後,配置環境
相關命令與內容:
- sudo tar -xzvf apache-hive-1.2.1-bin.tar.gz -C /home/hadoop
- sudo gedit /etc/profile
- ------------------------------內 容------------------------------
- #hive
- export HIVE_HOME=/home/hadoop/apache-hive-1.2.1-bin
- export PATH=$PATH:$HIVE_HOME/bin
- ------------------------------內 容------------------------------
- source /etc/profile
6、修改hive/conf下的幾個template模板
相關命令:
- sudo cp hive-env.sh.template hive-env.sh
- sudo cp hive-default.xml.template hive-site.xml
7、配置hive-env.sh文件,指定HADOOP_HOME
相關內容:
- HADOOP_HOME=/usr/local/hadoop
8、修改hive-site.xml文件,指定MySQL資料庫驅動、資料庫名、用戶名及密碼
相關內容:
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://localhost:3306/hive_metadata?createDatabaseIfNotExist=true</value>
- <description>JDBC connect string for a JDBC metastore</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionDriverName</name>
- <value>com.mysql.jdbc.Driver</value>
- <description>Driver class name for a JDBC metastore</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionUserName</name>
- <value>hive</value>
- <description>Username to use against metastore database</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionPassword</name>
- <value>hive</value>
- <description>password to use against metastore database</description>
- </property>
- <property>
- <name>hive.exec.local.scratchdir</name>
- <value>/home/hive/scratchdir</value>
- <description>Local scratch space for Hive jobs</description>
- </property>
- <property>
- <name>hive.downloaded.resources.dir</name>
- <value>/home/hive/resourcesdir</value>
- <description>Temporary local directory for added resources in the remote file system.</description>
- </property>
- <property>
- <name>hive.querylog.location</name>
- <value>/home/hive/querylog</value>
- <description>Location of Hive run time structured log file</description>
- </property>
- <property>
- <name>hive.server2.logging.operation.log.location</name>
- <value>/home/hive/operation_logs</value>
- <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
- </property>
9、創建目錄並更改用戶
相關命令:
- sudo mkdir -p /home/hive/scratchdir
- sudo mkdir -p /home/hive/resourcesdir
- sudo mkdir -p /home/hive/querylog
- sudo mkdir -p /home/hive/operation_logs
- sudo chown -R hadoop.hadoop /home/hive
- sudo chown -R hadoop.hadoop /home/hadoop/apache-hive-1.2.1-bin
10、修改hive/bin下的hive-config.sh文件,設置JAVA_HOME,HADOOP_HOME
相關內容:
- export JAVA_HOME=/usr/lib/jdk1.8.0_112/
- export HADOOP_HOME=/usr/local/hadoop
- 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節點)
相關命令:
- hadoop fs -mkdir /tmp
- hadoop fs -mkdir -p /user/hive/warehouse
- hadoop fs -chmod g+w /tmp
- hadoop fs -chmod g+w /user/hive/warehouse
13、啟動hive(注意:可以在/etc/profile或/etc/bash.bashrc配置,重啟計算機後直接hive)
相關命令:
- cd $HIVE_HOME/bin
- ./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手中