Hive1.2.2詳細安裝教程
Hive是Hadoop組態中的資料倉庫,本質是將sql語句轉換為MapReduce任務,所以Hive只是一個解析引擎,它的資料儲存在hdfs上,元資料資訊依託mysql資料庫。在這裡有一個小問題,為什麼需要mysql關係資料庫,因為hdfs儲存的只是資料資訊,而建表的時候是需要列名來查詢的,因此要用mysql來建立表資訊,當然也可以用其他的關係型資料庫。在這裡依託mysql資料庫搭建Hive元件。
1. 安裝MySQL伺服器端和MySQL客戶端;
•安裝:
– yum install mysql
– yum install mysql-server
•啟動:
– /etc/init.d/mysqld start
•設定使用者名稱和密碼:
– mysql admin -u root password ‘111111’
•測試登入是否成功:
– mysql -uroot -p111111
登入MySQL:(1)直接輸入密碼mysql -uroot -p111111 (2)使用者和密碼mysql -uroot –p,密碼111111
退出MySQL:exit;或者quit;
2. 安裝Hive
a.#Master
下載apache-hive-1.2.2-bin.tgz,並解壓
wget http://mirror.bit.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz
tar zxvf apache-hive-1.2.2-bin.tar.gz
b.修改Hive配置檔案
#Master
cd apache-hive-1.2.2-bin/conf
建立hive-site.xml配置檔案
vim hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>111111</value>
</property>
</configuration>
c.修改bashrc,配置環境變數
#Master、Slave1、Slave2
vim ~/.bashrc
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export PATH=$PATH:$HIVE_HOME/bin
#重新整理環境變數
source ~/.bashrc
d. 安裝MySQL連線工具
#Master
1)下載安裝包
wge thttps://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.44.tar.gz
tar zxvf mysql-connector-java-5.1.44.tar.gz
2)複製連線庫檔案
cp mysql-connector-java-5.1.44-bin.jar /usr/local/src/apache-hive-1.2.2-bin/lib
e.更新jline.jar
在早期Hadoop版本中 jline.jar的版本是0.9+ 使用這個版本會報錯,所以要替換成新版本的Jar包;
jline.jar包下載地址: http://maven.outofmemory.cn/jline/jline/2.12.1/
#Master
進入路徑cd /usr/local/src/hadoop-2.6.1/share/hadoop/yarn/lib
刪除jlin-0.9.94.jar rm -rf jline-0.9.94.jar
替換成新的版本cp jline-2.12.1.jar/usr/local/src/hadoop-2.6.1/share/hadoop/yarn/lib
f.拷貝安裝包
#Master
scp-r /usr/local/src/[email protected]:/usr/local/src/apache-hive-1.2.2-bin
scp-r /usr/local/src/apache-hive-1.2.2-bin [email protected]:/usr/local/src/apache-hive-1.2.2-bin
h.啟動Hive服務
#Master
hive
i.退出Hive服務
#Master
exit;
3.建立hive資料庫並重新整理許可權
mysql>CREATE USER ‘hive’ IDENTIFIED BY ‘hive’;
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘hive’@’master’ WITH GRANT OPTION;
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘hive’@’master’ IDENTIFIED BY ‘111111’;
mysql>flush privileges;
mysql>create database hive;
flush privileges; --為其他客戶端開啟連線許可權
4.解決mysql“Access denied for user'root'@'localhost'”
#/etc/init.d/mysql stop
#mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
#mysql -u root mysql
mysql>UPDATE user SET Password=PASSWORD('111111') where USER='root';
mysql>FLUSH PRIVILEGES;
mysql>quit;
#/etc/init.d/mysql restart
#mysql -uroot -p
Enterpassword: <輸入新設的密碼newpassword>
5.向Hive表中載入資料
load data inpath 'path' overwrite into table name; 載入hdfs路徑下的檔案,資料會從該目錄下移動到目標位置。
load data local inpath 'path' overwrite into table name; 載入本地檔案系統路徑下的檔案,資料會被拷貝到目標位置。
6.hive複製整段語句是出現 Display all 475possibilities? (y or n)錯誤的處理方法
在用hive時,複製一整片程式碼執行,發現好多提示: Display all 475possibilities? (y or n),導致複製失敗,原因:是複製的程式碼中包含了Tab縮排,只要將原來複制的程式碼中的Tab空格全部去掉即可。
7.hive匯入資料時最後幾列始終為NULL的原因:
主要是分隔符的問題,建立表指定的分隔符為"\t",可資料是以空格分割的。比如你的檔案內容裡面是以空格分割的,by的後面就寫‘’(裡面有一個空格);如果檔案內容是以逗號分割的,by後面就寫‘,’。