Hadoop第9周練習(xí)—Hive部署測試(含MySql部署)
1 運(yùn)行環(huán)境說明
1.1 硬軟件環(huán)境
1.2 機(jī)器網(wǎng)絡(luò)環(huán)境
2 書面作業(yè)1:搭建Hive環(huán)境
2.1 書面作業(yè)1內(nèi)容
2.2 搭建過程
2.2.1 安裝MySql數(shù)據(jù)庫
2.2.2 安裝Hive
2.2.3 驗(yàn)證部署
3 問題解決
3.1 設(shè)置mysql數(shù)據(jù)庫root用戶密碼報(bào)錯(cuò)
3.2 hive啟動(dòng),報(bào)CommandNeedRetryException異常
3.3 在hive中使用操作語言
1 運(yùn)行環(huán)境說明
1.1 硬軟件環(huán)境
l 主機(jī)操作系統(tǒng):Windows 64 bit,雙核4線程,主頻2.2G,6G內(nèi)存
l 虛擬軟件:VMware? Workstation 9.0.0 build-812388
l 虛擬機(jī)操作系統(tǒng):CentOS 64位,單核,1G內(nèi)存
l JDK:1.7.0_55 64 bit
l Hadoop:1.1.2
1.2 機(jī)器網(wǎng)絡(luò)環(huán)境
集群包含三個(gè)節(jié)點(diǎn):1個(gè)namenode、2個(gè)datanode,其中節(jié)點(diǎn)之間可以相互ping通。節(jié)點(diǎn)IP地址和主機(jī)名分布如下:
|
序號(hào) |
機(jī)器名 |
類型 |
用戶名 |
運(yùn)行進(jìn)程 |
|
|
1 |
10.88.147.221 |
hadoop1 |
名稱節(jié)點(diǎn) |
hadoop |
NN、SNN、JobTracer |
|
2 |
10.88.147.222 |
hadoop2 |
數(shù)據(jù)節(jié)點(diǎn) |
hadoop |
DN、TaskTracer |
|
3 |
10.88.147.223 |
hadoop3 |
數(shù)據(jù)節(jié)點(diǎn) |
hadoop |
DN、TaskTracer |
所有節(jié)點(diǎn)均是CentOS6.5 64bit系統(tǒng),防火墻均禁用,所有節(jié)點(diǎn)上均創(chuàng)建了一個(gè)hadoop用戶,用戶主目錄是/usr/hadoop。所有節(jié)點(diǎn)上均創(chuàng)建了一個(gè)目錄/usr/local/hadoop,并且擁有者是hadoop用戶。
2 書面作業(yè)1:搭建Hive環(huán)境
2.1 書面作業(yè)1內(nèi)容
安裝Hive,有條件的同學(xué)按本地獨(dú)立模式或遠(yuǎn)程模式安裝,將安裝過程和最后測試成功的界面抓圖提交。
2.2 搭建過程
2.2.1安裝MySql數(shù)據(jù)庫
2.2.1.1下載mysql安裝文件
下載地址:http://dev.mysql.com/downloads/mysql/#downloads,使用系統(tǒng)為CentOS選擇 Red Hat Enterprise Linux/Oracle系列:
操作系統(tǒng)為64位,選擇對應(yīng)安裝包進(jìn)行下載:
下載在本地目錄如下圖:
2.2.1.2上傳mysql安裝文件
把下載的mysql安裝包,使用SSH Secure File Transfer工具(第1、2作業(yè)周2.1.3.1介紹)上傳到/home/hadoop/Downloads 目錄下,如下圖所示:
2.2.1.3卸載舊的mysql
(1) 查找以前是否安裝有mysql
使用命令查看是否已經(jīng)安裝過mysql:
rpm -qa | grep -i mysql
可以看到如下圖的所示:
說明之前安裝了:
MySQL-client-5.6.21-1.el6.x86_64
MySQL-server-5.6.21-1.el6.x86_64
MySQL-devel-5.6.21-1.el6.x86_64
如果沒有結(jié)果,可以進(jìn)行mysql數(shù)據(jù)庫安裝
(2) 停止mysql服務(wù)、刪除之前安裝的mysql
停止mysql服務(wù)、刪除之前安裝的mysql刪除命令:rpm -e –nodeps 包名
sudo rpm -ev MySQL-server-5.6.21-1.el6.x86_64
sudo rpm -ev MySQL-devel-5.6.21-1.el6.x86_64
sudo rpm -ev MySQL-client-5.6.21-1.el6.x86_64
如果存在CentOS自帶mysql-libs-5.6.21-1.el6.x86_64使用下面的命令卸載即可
sudo rpm -ev --nodeps mysql-libs-5.6.21-1.el6.x86_64
(3) 查找之前老版本mysql的目錄并且刪除老版本mysql的文件和庫
sudo find / -name mysql
刪除對應(yīng)的mysql目錄
sudo rm -rf /usr/lib64/mysql
sudo rm -rf /var/lib/mysql
(4) 再次查找機(jī)器是否安裝mysql
sudo rpm -qa | grep -i mysql
無結(jié)果,說明已經(jīng)卸載徹底、接下來直接安裝mysql即可
2.2.1.4安裝mysql
進(jìn)入安裝文件的目錄,安裝mysql服務(wù)端
cd /home/hadoop/Downloads
sudo rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm
安裝mysql客戶端、mysql-devel
sudo rpm -ivh MySQL-client-5.6.21-1.el6.x86_64.rpm
sudo rpm -ivh MySQL-devel-5.6.21-1.el6.x86_64.rpm
2.2.1.5設(shè)置root密碼
在CentOS6.5下安裝mysql設(shè)置root密碼時(shí),出現(xiàn)如下錯(cuò)誤:
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
可以進(jìn)入安全模式進(jìn)行設(shè)置root密碼
(1) 停止mysql服務(wù)
使用如下命令停止mysql服務(wù):
sudo service mysql stop
sudo service mysql status
(2) 跳過驗(yàn)證啟動(dòng)mysql
使用如下命令驗(yàn)證啟動(dòng)mysql,由于&結(jié)尾是后臺(tái)運(yùn)行進(jìn)程,運(yùn)行該命令可以再打開命令窗口或者Ctr+C繼續(xù)進(jìn)行下步操作:
mysqld_safe --skip-grant-tables &
sudo service mysql status
(3) 跳過驗(yàn)證啟動(dòng)MySQL
驗(yàn)證mysql服務(wù)已經(jīng)在后臺(tái)運(yùn)行后,執(zhí)行如下語句,其中后面三條命令是在mysql語句:
mysql -u root
mysql>use mysql;
mysql>update user set password = password('root') where user = 'root';
mysql>flush privileges;
(4) 跳過驗(yàn)證啟動(dòng)MySQL
重啟mysql服務(wù)并查看狀態(tài)
sudo service mysql stop
sudo service mysql start
sudo service mysql status
2.2.1.6設(shè)置hive用戶
進(jìn)入mysql命令行,創(chuàng)建hive用戶并賦予所有權(quán)限:
mysql -uroot -proot
mysql>create user 'hive' identified by 'hive';
mysql>grant all on *.* TO 'hive'@'%' with grant option;
mysql>flush privileges;
(注意:如果是root第一次登錄數(shù)據(jù)庫,需要重新設(shè)置一下密碼,所報(bào)異常信息如下:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement)
2.2.1.7創(chuàng)建hive數(shù)據(jù)庫
使用hive用戶登錄,創(chuàng)建hive數(shù)據(jù)庫:
mysql -uhive -phive
mysql>create database hive;
mysql>show databases;
2.2.2安裝Hive
2.2.2.1下載hive安裝文件
可以到Apache基金hive官網(wǎng)http://hive.apache.org/downloads.html,選擇鏡像下載地址:http://mirrors.cnnic.cn/apache/hive/下載一個(gè)穩(wěn)定版本,如下圖所示:
2.2.2.2下載mysql驅(qū)動(dòng)
到mysql官網(wǎng)進(jìn)入下載頁面:http://dev.mysql.com/downloads/connector/j/ ,選擇所需要的版本進(jìn)行下載,這里下載的zip格式的文件
2.2.2.3上傳mysql安裝文件和mysql驅(qū)動(dòng)
把下載的hive安裝包和mysql驅(qū)動(dòng)包,使用SSH Secure File Transfer工具(第1、2作業(yè)周2.1.3.1介紹)上傳到/home/hadoop/Downloads 目錄下,如下圖所示:
2.2.2.4把mysql驅(qū)動(dòng)放到hive的lib目錄下
把下載的hive安裝包和mysql驅(qū)動(dòng)包,使用
cd /home/hadoop/Downloads
cp mysql-connector-java-5.1.34-bin.jar /usr/local/hive-0.12.0/lib
2.2.2.5解壓縮
到上傳目錄下,用如下命令解壓縮hive安裝文件:
cd /home/hadoop/Downloads
tar -zxvf hive-0.12.0-bin.tar.gz
遷移到/usr/local目錄下:
sudo mv hive-0.12.0-bin /usr/local/hive-0.12.0
2.2.2.6配置/etc/profile環(huán)境變量
使用如下命令打開/etc/profile文件:
sudo vi /etc/profile
使配置文件生效:
source /etc/profile
2.2.2.7設(shè)置hive-env.sh配置文件
進(jìn)入hive-0.12.0/conf目錄,復(fù)制hive-env.sh.templaete為hive-env.sh:
cd /usr/local/hive-0.12.0/conf
cp hive-env.sh.template hive-env.sh
ls
vi hive-env.sh
分別設(shè)置HADOOP_HOME和HIVE_CONF_DIR兩個(gè)值:
2.2.2.8設(shè)置hive-site.xml配置文件
復(fù)制hive-default.xml.templaete為hive-site.xml
cp hive-default.xml.template hive-site.xml
sudo vi hive-site.xml
(1) 加入配置項(xiàng)
默認(rèn)metastore在本地,添加配置改為非本地
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
(2) 修改配置項(xiàng)
hive默認(rèn)為derby數(shù)據(jù)庫,需要把相關(guān)信息調(diào)整為mysql數(shù)據(jù)庫
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop1:9083</value>
<description>Thrift URI for the remote metastore. ...</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop1:3306/hive?=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>
(3) 訂正錯(cuò)誤項(xiàng)
在配置文件2000行左右配置項(xiàng)hive.server2.thrift.sasl.qop原來為<value>auth</auth>,按照如下進(jìn)行修改:
<property>
<name>hive.server2.thrift.sasl.qop</name>
<value>auth</value>
<des.....
</property>
并把hive.metastore.schema.verification配置項(xiàng)值修改為false
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<desc....>
</property>
2.2.3驗(yàn)證部署
2.2.3.1啟動(dòng)metastore和hiveserver
在使用hive之前需要啟動(dòng)metastore和hiveserver服務(wù),通過如下命令啟用:
hive --service metastore &
hive --service hiveserver &
啟動(dòng)用通過jps命令可以看到兩個(gè)進(jìn)行運(yùn)行在后臺(tái)
2.2.3.2在hive中操作
登錄hive,在hive創(chuàng)建表并查看該表,命令如下:
hive
hive>create table test(a string, b int);
hive>show tables;
hive>desc test;
登錄mysql,在TBLS表中查看新增test表:
mysql -uhive -phive
mysql>use hive;
mysql>select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;
3 問題解決
3.1 設(shè)置mysql數(shù)據(jù)庫root用戶密碼報(bào)錯(cuò)
在CentOS6.5下安裝mysql設(shè)置root密碼時(shí),出現(xiàn)如下錯(cuò)誤:
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
(5) 停止mysql服務(wù)
使用如下命令停止mysql服務(wù):
sudo service mysql stop
sudo service mysql status
(6) 跳過驗(yàn)證啟動(dòng)mysql
使用如下命令驗(yàn)證啟動(dòng)mysql,由于&結(jié)尾是后臺(tái)運(yùn)行進(jìn)程,運(yùn)行該命令可以再打開命令窗口或者Ctr+C繼續(xù)進(jìn)行下步操作:
mysqld_safe --skip-grant-tables &
sudo service mysql status
(7) 跳過驗(yàn)證啟動(dòng)MySQL
驗(yàn)證mysql服務(wù)已經(jīng)在后臺(tái)運(yùn)行后,執(zhí)行如下語句,其中后面三條命令是在mysql語句:
mysql -u root
mysql>use mysql;
mysql>update user set password = password('root') where user = 'root';
mysql>flush privileges;
(8) 跳過驗(yàn)證啟動(dòng)MySQL
重啟mysql服務(wù)并查看狀態(tài)
sudo service mysql stop
sudo service mysql start
sudo service mysql status
3.2 hive啟動(dòng),報(bào)CommandNeedRetryException異常
啟動(dòng)hive時(shí),出現(xiàn)CommandNeedRetryException異常,具體信息如下:
Exception in thread "main" java.lang.NoClassDefFoundError:org/apache/hadoop/hive/ql/CommandNeedRetryException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.hadoop.util.RunJar.main(RunJar.java:149)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.CommandNeedRetryException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
由于以前使用hadoop時(shí),修改hadoop-env.sh的HADOOP_CLASSPATH配置項(xiàng),由以前的:
export HADOOP_CLASSPATH=/usr/local/hadoop-1.1.2/myclass
修改為:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/hadoop-1.1.2/myclass
3.3 在hive中使用操作語言
啟動(dòng)hive后,使用Hsql出現(xiàn)異常,需要啟動(dòng)metastore和hiveserver
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
在使用hive之前需要啟動(dòng)metastore和hiveserver服務(wù),通過如下命令啟用:
hive --service metastore &
hive --service hiveserver &
啟動(dòng)用通過jps命令可以看到兩個(gè)進(jìn)行運(yùn)行在后臺(tái)









































![clip_image028[1] clip_image028[1]](http://images0.cnblogs.com/blog/107289/201501/060901462659612.jpg)
![clip_image030[1] clip_image030[1]](http://images0.cnblogs.com/blog/107289/201501/060901472342684.jpg)
![clip_image032[1] clip_image032[1]](http://images0.cnblogs.com/blog/107289/201501/060901482183282.jpg)
![clip_image034[1] clip_image034[1]](http://images0.cnblogs.com/blog/107289/201501/060901492816325.jpg)
![clip_image036[1] clip_image036[1]](http://images0.cnblogs.com/blog/107289/201501/060901501567424.jpg)




![clip_image076[1] clip_image076[1]](http://images0.cnblogs.com/blog/107289/201501/060901567966561.jpg)
![clip_image078[1] clip_image078[1]](http://images0.cnblogs.com/blog/107289/201501/060901577346875.jpg)
浙公網(wǎng)安備 33010602011771號(hào)