• Hadoop学习笔记-009-CentOS_6.5_64_HA高可用-Hadoop2.6+Zookeeper3.4.5安装Hive1.1.0


    参考:

    http://www.cnblogs.com/fefjay/p/6044471.html

    http://blog.csdn.net/totxian/article/details/45248399

    创建hive用户

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

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

    #mysql -uroot -p123456

    创建hive用户

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

    给hive用户赋权限

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

    刷新mysql系统权限

    # flush privileges;

    第二步,创建hive数据库

    用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,创建表并添加数据

     

    该问题解决。

    完成!

  • 相关阅读:
    Spring boot3之整合HTML
    Spring boot4之数据校验
    Spring boot5之整合mybatis
    Spring boot6之整合Spring Data JPA
    Spring boot7之整合Spring Data Redis
    Spring boot8之整合Spring Security
    sqlmap从入门到精通-第七章-7-11 绕过WAF脚本-informationschemacomment.py&least.py
    系统提权-各种反弹shell使用
    Vulnhub-靶机-SpyderSec: Challenge
    sqlmap从入门到精通-第七章-7-10 绕过WAF脚本-ifnull2casewhenisnull.py&ifnull2ifisnull.py
  • 原文地址:https://www.cnblogs.com/liudi1992/p/6343648.html
Copyright © 2020-2023  润新知