美文网首页大数据
Hive搭建指南 环境CentOS7

Hive搭建指南 环境CentOS7

作者: AceCream佳 | 来源:发表于2019-04-12 18:35 被阅读1次

    这里Hadoop的版本用的是 2.7.5
    hive版本选择的是 2.3.4
    请看好与hadoop版本搭配的hive,官方目前继续提供2.x和3.x的支持。
    机器依然是hadoop的:

    192.168.20.3 Master
    192.168.20.4 Slave1
    192.168.20.5 Slave2

    关于hadoop搭建请看:https://www.jianshu.com/p/25a0650b4a40https://www.jianshu.com/p/bcb2f77d90e8

    首先要说明一下:hive的搭建除了hadoop之外还有mysql,所以这边先简单说一下centos下关于mysql的安装。

    1.MYSQL的准备

    1.首先卸载CentOs自带的mysql
    执行rpm -qa | grep mysql选择出现的机器上自带的mysql
    执行rpm -e 机器上mysql的名字 --nodeps
    执行yum -y install mysql-server安装新的
    如果此时提示 mysql-server没有可用包,分别执行:

    yum -y install wget
    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    rpm -ivh mysql-community-release-el7-5.noarch.rpm
    yum install mysql-server
    

    执行service mysqld start开启服务,然后执行service mysqld status看到开启了,继续接下来的步骤:
    执行cd /usr/bin去目录下执行命令./mysql_secure_installation
    因为第一次启动密码为空,所以回车就可以,然后会要求设置密码
    后面会进行初始化设置:
    1.是否删除匿名用户

    Remove anonymous users? [Y/n] Y
    ... Success!
    

    2.是否不允许用户远程连接

    Disallow root login remotely? [Y/n] N
    ... Success!
    

    3.是否删除test数据库

    Remove test database and access to it? [Y/n] Y
     Dropping test database...
    ... Success!
     Removing privileges on test database...
    ... Success!
    

    4.是否重装

    Reload privilege tables now? [Y/n] Y
    ... Success!
    

    然后就完成了。我们登录mysql
    mysql -uroot -p
    分别执行:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
    
    FLUSH PRIVILEGES;
    
    exit;
    

    mysql配置就完成了!

    2.接下来就是Hive的时间了

    我们去官网下载一个hive,注意版本!
    然后放到文件夹下,这边路径是 /opt/soft
    此时文件的所有者是root,可以修改一下
    分别是:
    chgrp 用户名 文件名 -R 更改文件所属用户组
    chown 用户名 文件名 -R 更改文件所属用户

    去/etc/profile配置环境变量

    export HIVE_HOME=/opt/soft/hive-2.3.4
    export HIVE_CONF_DIR=$HIVE_HOME/conf
    export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
    export PATH=$PATH:$HIVE_HOME/bin
    

    执行source /etc/profile
    1.hive-env.sh
    增加以下:

    JAVA_HOME=/opt/java/jdk1.8.0_201
    HADOOP_HOME=/opt/soft/hadoop-2.7.1
    HIVE_HOME=/opt/soft/hive-2.3.4
    
    export HIVE_CONF_DIR=$HIVE_HOME/conf
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$HADOOP_HOME/lib:$HIVE_HOME/lib
    export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
    

    接下来就是编辑hive的配置文件了,这个是最费劲的!建议多使用vim的查找功能 也就是 Esc键之后 "/"键 写单词再回车!N是前一个单词,n是后一个单词。
    在这之前先去hive的目录创建四个文件夹分别是:warehouse、log、tmp/resources、tmp/hiveJobsLog
    2.hive-site.xml
    首先要把hive-default.xml.template文件名字改成hive-site.xml

    <!-- 设定数据目录 -->
    <property>
          <name>hive.metastore.warehouse.dir</name>
          <value>/opt/soft/hive-2.3.4/warehouse</value>
    </property>
    <!-- 设定临时文件目录 -->
    <property>
          <name>hive.downloaded.resources.dir</name>
          <value>/opt/soft/hive-2.3.4/tmp/resources</value>
    </property>
    <!-- 存放hive相关日志的目录 -->
    <property>
          <name>hive.querylog.location</name>
          <value>/opt/soft/hive-2.3.4/log</value>
    </property>
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/opt/soft/hive-2.3.4/tmp/hiveJobsLog</value>
        <description>Local scratch space for Hive jobs</description>
    </property>
    

    这时候先保存一下让我们缓一缓~上面是关于日志和资源文件的修改。然后在hdfs上创建相同的目录
    依次执行:

    hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/warehouse
    hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/tmp/resources
    hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/tmp/hiveJobsLog
    hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/log
    
    hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/warehouse
    hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/tmp/resources
    hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/tmp/hiveJobsLog
    hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/log
    

    接下来我们去修改其他关于mysql的配置。
    依然是 hive-site.xml

    <!-- 这四个参数设置连接mysql -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://Master:3306/hive_metadata?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>root</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
        <description>password to use against metastore database</description>
    </property>
    
    <!-- 自动分区 -->
    <property>
        <name>hive.exec.dynamic.partition</name>
        <value>true</value>
     </property>
    <property>
        <name>hive.exec.dynamic.partition.mode</name>
        <value>nonstrict</value>
     </property>
     <!-- 这里注意一下,如果meta元数据在远程的话可以在这里进行配置,如果在本地就不需要,这边mysql在Master上,所以不需要配置 -->
     <property>
        <name>hive.metastore.uris</name>
        <value/>
        <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
      </property>
     <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>Master</value>
        <description>Bind host on which to run the HiveServer2 Thrift service.</description>
      </property>
     <property>
        <name>hive.server2.metrics.enabled</name>
        <value>false</value>
        <description>Enable metrics on the HiveServer2.</description>
      </property>
      <property>
        <name>hive.server2.thrift.http.port</name>
        <value>10001</value>
        <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'http'</description>
     </property>
    <!-- HiveServer2的WEB UI -->
    <property>
        <name>hive.server2.webui.host</name>
        <value>Master</value>
    </property>
    <property>
        <name>hive.server2.webui.port</name>
        <value>10002</value>
    </property>
    <property>
        <name>hive.scratch.dir.permission</name>
        <value>755</value>
    </property>
    

    终于!!!!终于改好了!!!还不知道对不对,是在太多了!

    3.接下来是 配置日志的地址, 修改hive-log4j.properties文件
    cp hive-log4j.properties.template hive-log4j.properties
    vi hive-log4j.properties

    hive.log.dir=/opt/soft/hive-2.3.4/log4jFile
    

    要先去创建文件夹哦!!!

    4.然后拷贝一个JDBC包也就是mysql的连接包到hive的lib目录下
    由于我是用虚拟机,所以可以这么弄。。。

    cp /mnt/hgfs/shareOS/mysql-connector-java-5.1.6.jar /opt/soft/hive-2.3.4/lib/
    
    1. 拷贝jline扩展包
      $HIVE_HOME/lib目录下的jline-2.12.jar包拷贝到$HADOOP_HOME/share/hadoop/yarn/lib目录下
      如果hadoop那个lib里有旧版本,就先把旧版本干掉!
      他是个java命令行交互输入库。
    cp /opt/soft/hive-2.3.4/lib/jline-2.12.jar /opt/soft/hadoop-2.7.1/share/hadoop/yarn/lib/
    

    6.拷贝tools.jar包
    复制$JAVA_HOME/lib目录下的tools.jar到$HIVE_HOME/lib

    cp $JAVA_HOME/lib/tools.jar /opt/soft/hive-2.3.4/lib/
    
    1. 执行初始化Hive操作
      现在有两个选择用MySql或者Derby,我们选择mysql,当然把Derby的粘贴出来一下。
      mysql : schematool -dbType mysql -initSchema
      Derby: schematool -dbType mysql -initSchema
      mysql主要是用mysql做存储hive元数据的数据库,我们配置里已经写好了hive_metadata

    现在!!!!终于要使用了!!!!

    1.开启metastore
    nohup hive --service metastore 2>&1 &
    2.开启hiveserver2
    nohup hive --service hiveserver2 2>&1 &

    ok!!启动完之后看一下jps会多出两个Runjar
    然后去看一下 http://192.168.20.3:10002/

    hiveServer2
    发现ui可以的。
    执行hive
    hive操作
    这里使用了show databases;查看了一下数据库,发现有个default,可以
    use default;
    show tables;
    之类的命令,这里不多提了,sql也不在这里赘述了。

    相关文章

      网友评论

        本文标题:Hive搭建指南 环境CentOS7

        本文链接:https://www.haomeiwen.com/subject/tioqwqtx.html