参考: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,建立表并添加数据
该问题解决。
完成!