参考:


 

创建hive用户

第一步,创建hive用户并赋权限

用mysql的root用户登录进入命令行



#mysql -uroot -p123456



 

 

通过CDH给hive新增用户 hive创建新用户_数据库

 

 

创建hive用户



mysql # create user 'hive' identified by 'hive';



 

通过CDH给hive新增用户 hive创建新用户_数据库_02

 

给hive用户赋权限

 



mysql # grant all privileges on hivedb.* to 'hive'@'%' identified by 'hive';

mysql # grant all privileges on hivedb.* to 'hive'@'localhost' identified by 'hive';



 

 

通过CDH给hive新增用户 hive创建新用户_大数据_03

 

通过CDH给hive新增用户 hive创建新用户_hive_04

 

刷新mysql系统权限



# flush privileges;



 

通过CDH给hive新增用户 hive创建新用户_hadoop_05

 

第二步,创建hive数据库

用root用户登录



# mysql -uroot -p123456



 

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_06

 

创建hive的数据库



mysql # create database hivedb;



 

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_07

查看hive的用户的数据库



mysql# show databases;



 

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_08

 

用户hive用户登录



#mysql –uhive -phive



 

通过CDH给hive新增用户 hive创建新用户_数据库_09

Hive用户查看数据库



mysql# show database



 

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_10

使用hivedb数据库



mysql#use hivedb



 

通过CDH给hive新增用户 hive创建新用户_hadoop_11

 

创建表



mysql#create table test(name varchar(10));



 

通过CDH给hive新增用户 hive创建新用户_hadoop_12

 

查看test表



mysql#show tables;



 

通过CDH给hive新增用户 hive创建新用户_hive_13

 

 

安装hive

 

第一步,解压已下载好的hive安装包



#tar –zxvf hive-1.1.0-cdh5.4.5.tar.gz



 

 

 

通过CDH给hive新增用户 hive创建新用户_hadoop_14

 

解压后删除hive安装包,节省磁盘空间



#rm –rf hive-1.1.0-cdh5.4.5.tar.gz



 

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_15

 

第二步,复制mysql的驱动包到hive安装目录的lib目录下



# scp mysql-connector-java-5.1.40-bin.jar /home/hadoop/app/hive-1.1.0-cdh5.4.5/lib



 

通过CDH给hive新增用户 hive创建新用户_大数据_16

 

第三步,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



 

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_17

 

使环境变量及时生效



#source /etc/profile



 

通过CDH给hive新增用户 hive创建新用户_hive_18

 

第四步,配置hive-env.sh

hadoop用户登录



#su hadoop



 

进入$HIVE_HOME/conf目录,并将文件hive-env.sh.template重命名为hive-env.sh



#mv hive-env.sh.template hive-env.sh



 

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_19

打开hive-env.sh文件并修改配置



#vi hive-env.sh



 

通过CDH给hive新增用户 hive创建新用户_数据库_20

 

第五步,配置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



 

通过CDH给hive新增用户 hive创建新用户_大数据_21

 

添加以下配置:



<?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,如下

通过CDH给hive新增用户 hive创建新用户_大数据_22

 

hive-site.xml文件的配置如下

通过CDH给hive新增用户 hive创建新用户_hive_23

 

通过CDH给hive新增用户 hive创建新用户_大数据_24

 

在$HIVE_HOME目录下创建local和logs目录



#mkdir local

#mkdir logs



 

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_25

 

 

 

第六步,配置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



 

通过CDH给hive新增用户 hive创建新用户_hadoop_26

 

修改文件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

通过CDH给hive新增用户 hive创建新用户_hive_27

 

通过CDH给hive新增用户 hive创建新用户_hadoop_28

 

 

hive-log4j.properties

通过CDH给hive新增用户 hive创建新用户_hive_29

 

通过CDH给hive新增用户 hive创建新用户_数据库_30

 

 



第七步,启动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



 

 

通过CDH给hive新增用户 hive创建新用户_hive_31

 

 

 

至此,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的值,但是重启后仍会出现以下问题:

通过CDH给hive新增用户 hive创建新用户_hive_32

 

像这种情况重启hive服务是无效的,仍会报错,需要用以下方式更正:

 

登录mysql  



#mysql –uhive –phive



 

以下是我的mysql中的数据库,其中hivedb是我的hive连接的数据库

通过CDH给hive新增用户 hive创建新用户_hadoop_33

 

查看hivedb库的所有表:

通过CDH给hive新增用户 hive创建新用户_hadoop_34

 

 

 

其中的DBS和SDS是需要修改的表,这两张表中保存着原来的hdfs的路径(也就是hdfs://cdh1:9000),修改成HA对应的别名即可(也就是core-site.xml文件中的hdfs://cluster1),修改如下

首先查看修改前的hivedb.DBS表的数据:



#select * from hivedb.DBS;



 

通过CDH给hive新增用户 hive创建新用户_hive_35

 

然后修改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根据实际数据更新。

通过CDH给hive新增用户 hive创建新用户_通过CDH给hive新增用户_36

 

然后查看修改前的hivedb.SDS表的数据:



# select * from hivedb.SBS;



 

通过CDH给hive新增用户 hive创建新用户_数据库_37

 

然后修改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根据实际数据更新。

通过CDH给hive新增用户 hive创建新用户_hive_38

 

重新进入hive,创建表并添加数据

 

 

通过CDH给hive新增用户 hive创建新用户_hive_39

 

该问题解决。

 

完成!