參考:html
http://www.cnblogs.com/fefjay/p/6044471.htmljava
http://blog.csdn.net/totxian/article/details/45248399mysql
建立hive用戶sql
第一步,建立hive用戶並賦權限數據庫
用mysql的root用戶登陸進入命令行apache
#mysql -uroot -p123456
建立hive用戶session
mysql # create user 'hive' identified by 'hive';
給hive用戶賦權限app
mysql # grant all privileges on hivedb.* to 'hive'@'%' identified by 'hive'; mysql # grant all privileges on hivedb.* to 'hive'@'localhost' identified by 'hive';
刷新mysql系統權限ide
# flush privileges;
第二步,建立hive數據庫oop
用root用戶登陸
# mysql -uroot -p123456
建立hive的數據庫
mysql # create database hivedb;
查看hive的用戶的數據庫
mysql# show databases;
用戶hive用戶登陸
#mysql –uhive -phive
Hive用戶查看數據庫
mysql# show database
使用hivedb數據庫
mysql#use hivedb
建立表
mysql#create table test(name varchar(10));
查看test表
mysql#show tables;
安裝hive
第一步,解壓已下載好的hive安裝包
#tar –zxvf hive-1.1.0-cdh5.4.5.tar.gz
解壓後刪除hive安裝包,節省磁盤空間
#rm –rf hive-1.1.0-cdh5.4.5.tar.gz
第二步,複製mysql的驅動包到hive安裝目錄的lib目錄下
# scp mysql-connector-java-5.1.40-bin.jar /home/hadoop/app/hive-1.1.0-cdh5.4.5/lib
第三步,root用戶配置環境變量
#vi /etc/profile
添加如下配置
HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.4.5 export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
使環境變量及時生效
#source /etc/profile
第四步,配置hive-env.sh
hadoop用戶登陸
#su hadoop
進入$HIVE_HOME/conf目錄,並將文件hive-env.sh.template重命名爲hive-env.sh
#mv hive-env.sh.template hive-env.sh
打開hive-env.sh文件並修改配置
#vi hive-env.sh
第五步,配置hive-site.xml文件
在$HIVE_HOME/conf目錄下建立hive-site.xml文件
#cd /home/hadoop/app/hive-1.1.0-cdh5.4.5/conf #echo "" > hive-site.xml
添加如下配置:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hive.exec.scratchdir</name> <value>hdfs://cluster1/hive/scratchdir</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>hdfs://cluster1/hive/warehouse</value> </property> <property> <name>hive.querylog.location</name> <value>/home/hadoop/app/hive-1.1.0-cdh5.4.5/logs</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.150.103:3306/hivedb?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>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/home/hadoop/app/hive-1.1.0-cdh5.4.5/local/${hive.session.id}_resources</value> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value>/home/hadoop/app/hive-1.1.0-cdh5.4.5/logs/operation_logs</value> </property> </configuration>
其中,hive-site.xml文件中的hive.exec.scratchdir和hive.metastore.warehouse.dir的hdfs訪問地址須要和hadoop的配置文件core-site.xml中fs.defaultFS的值一致,個人配置是hdfs://cluster1,以下
hive-site.xml文件的配置以下
在$HIVE_HOME目錄下建立local和logs目錄
#mkdir local #mkdir logs
第六步,配置log4j
進入到$HIVE_HOME/conf目錄下
重命名hive-exec-log4j.properties.template爲hive-exec-log4j.properties
#mv hive-exec-log4j.properties.template hive-exec-log4j.properties
重命名hive-log4j.properties.template 爲hive-log4j.properties
#mv hive-log4j.properties.template hive-log4j.properties
修改文件hive-exec-log4j.properties和hive-log4j.properties(修改如下兩行)
hive.log.dir=/home/hadoop/app/hive-1.1.0-cdh5.4.5/logs log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
hive-exec-log4j.properties
hive-log4j.properties
第七步,啓動hadoop 啓動zookeeper,進入cdh3節點的~/tools目錄 #cd ~/tools/ #./runRemoteCmd.sh "~/app/zookeeper-3.4.5-cdh5.4.5/bin/zkServer.sh start" zookeeper 啓動HDFS,進入cdh1節點的~/app/hadoop-2.6.0-cdh5.4.5/sbin目錄,執行./start-dfs.sh # cd ~/app/hadoop-2.6.0-cdh5.4.5/sbin #./start-dfs.sh 啓動YARN,進入cdh1節點的~/app/hadoop-2.6.0-cdh5.4.5/sbin目錄,執行./start-yarn.sh # cd ~/app/hadoop-2.6.0-cdh5.4.5/sbin #./start-yarn.sh 啓動resourcemanager,進入cdh2節點的~/app/hadoop-2.6.0-cdh5.4.5/sbin目錄 # cd ~/app/hadoop-2.6.0-cdh5.4.5/sbin # ./yarn-daemon.sh start resourcemanager 查看各節點進程,進入cdh1的~/tools目錄下 #cd ~/tools/ #./runRemoteCmd.sh "jps" all ****************************關閉hadoop集羣************************ 關閉cdh1的resourcemanager,進入cdh1節點的~/app/hadoop-2.6.0-cdh5.4.5/sbin目錄,執行./yarn-daemon.sh stop resourcemanager #cd ~/app/hadoop-2.6.0-cdh5.4.5/sbin #./yarn-daemon.sh stop resourcemanager 關閉yarn(也會關閉cdh2的resourcemanager),進入cdh2節點的~/app/hadoop-2.6.0-cdh5.4.5/sbin目錄,執行./stop-yarn.sh #cd ~/app/hadoop-2.6.0-cdh5.4.5/sbin # ./stop-yarn.sh 關閉HDFS,進入cdh1節點的~/app/hadoop-2.6.0-cdh5.4.5/sbin目錄,執行./stop-dfs.sh # cd ~/app/hadoop-2.6.0-cdh5.4.5/sbin #./stop-dfs.sh 關閉zookeeper,進入cdh3節點的~/tools目錄 #cd ~/tools/ #./runRemoteCmd.sh "~/app/zookeeper-3.4.5-cdh5.4.5/bin/zkServer.sh stop" zookeeper 查看進程,進入cdh1的~/tools目錄下 #cd ~/tools/ #./runRemoteCmd.sh "jps" all
第八步,啓動hive
#hive
至此,Hive安裝完成。
*********************************FAQ*******************************
hive-site.xml文件的hive.exec.scratchdir和hive.metastore.warehouse.dir,第一次我配置成了以下:
hive.exec.scratchdir hdfs://cdh1:9000/ hive/scratchdir hive.metastore.warehouse.dir hdfs://cdh1:9000/ hive/warehouse
發現啓動有問題,因而就改爲了hadoop中的core-site.xml配置文件中的fs.defaultFS的值,可是重啓後仍會出現如下問題:
像這種狀況重啓hive服務是無效的,仍會報錯,須要用如下方式更正:
登陸mysql
#mysql –uhive –phive
如下是個人mysql中的數據庫,其中hivedb是個人hive鏈接的數據庫
查看hivedb庫的全部表:
其中的DBS和SDS是須要修改的表,這兩張表中保存着原來的hdfs的路徑(也就是hdfs://cdh1:9000),修改爲HA對應的別名便可(也就是core-site.xml文件中的hdfs://cluster1),修改以下
首先查看修改前的hivedb.DBS表的數據:
#select * from hivedb.DBS;
而後修改hivedb.DBS表的hdfs存儲路徑,並查看修改後的數據,以下:
#update hivedb.DBS set DB_LOCATION_URI='hdfs://cluster1/hive/warehouse' WHERE DB_ID='1'; #update hivedb.DBS set DB_LOCATION_URI='hdfs://cluster1/hive/warehouse/hive.db' WHERE DB_ID='6';
其中的條件DB_ID根據實際數據更新。
而後查看修改前的hivedb.SDS表的數據:
# select * from hivedb.SBS;
而後修改hivedb.SDS表的hdfs存儲路徑,並查看修改後的數據,以下:
# update hivedb.SDS set LOCATION='hdfs://cluster1/hive/warehouse/hive.db/test2' where SD_ID='6'; # update hivedb.SDS set LOCATION='hdfs://cluster1/hive/warehouse/hive.db/test3' where SD_ID='11';
其中的條件SD_ID根據實際數據更新。
從新進入hive,建立表並添加數據
該問題解決。
完成!