CentOS 6.9 中 搭建 Hive

折月煮酒 提交于 2019-12-05 06:19:37

1. 解压 hive 安装包

sudo tar -zxvf apache-hive-2.1.1-bin.tar.gz

2. 安装 mysql 

sudo yum install mysql-server

3. 安装 mysql-connector

sudo yum install mysql-connector-java

4. 建立 mysql-connector 链接

ln -s /usr/share/java/mysql-connector-java.jar /opt/apache-hive-2.1.1-bin/lib/mysql-connector-java.jar

5. 启动 mysql

sudo service mysqld start

   验证 mysql 服务 是否启动成功

ps aux | grep mysql

6. 修改 mysql 数据库的 root 用户的密码

# 使用mysql的root用户登录,root用户的初始密码为空字符串
[bigdata@bigdata ~]$ mysql -u root
# 使用mysql数据库
mysql> use mysql
# 修改root用户的密码为newPassword
mysql> update user set password = password('root') where user = 'newPassword';
# 刷新权限使新密码立即生效
mysql> flush privileges;
# 设置允许root用户通过任意机器访问mysql
mysql> grant all privileges on *.* to 'root'@'%' identified by 'newPassword' with grant option;
# 刷新权限
mysql> flush privileges;

7. 配置 Hive 环境变量

export HIVE_HOME=/opt/apache-hive-2.1.1-bin
# 在下面这行末尾添加 :$HIVE_HOME/bin
export PATH=$HOME/bin:$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$FLUME_HOME/bin:$HIVE_HOME/bin
source ~/.bash_profile

8. 配置 /opt/apache-hive-2.1.1-bin/conf/hive-site.xml

  • hive.metastore.uris中的 bigdata 含义为 metastore 所在的机器
  • javax.jdo.option.ConnectionURL中的 bigdata 为 mysql 安装机器的 hostname
  • javax.jdo.option.ConnectionUserName 和 javax.jdo.option.ConnectionPassword 分别为mysql 的访问用户和密码,可通过以下命令验证是否有效(期中bigdata为javax.jdo.option.ConnectionURL中配置的地址,xxx为mysql用户名):mysql –h bigdata-u xxx –p
  • fs.defaultFS 为HDFS的 namenode 启动的机器地址
  • beeline.hs2.connection.user 和 beeline.hs2.connection.password 是beeline方式访问的用户名和密码,可任意指定,但在beeline访问时要写入你指定的这个
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
       Licensed under the Apache License, Version 2.0 (the "License");
         you may not use this file except in compliance with the License.
           You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        See the License for the specific language governing permissions and
          limitations under the License. See accompanying LICENSE file.
          -->

<!-- Put site-specific property overrides in this file. -->
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://bigdata:9083</value>
    </property>
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://bigdata/metastore?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>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/warehouse</value>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata:9000</value>
    </property>
    <property>
        <name>datanucleus.autoCreateSchema</name>
        <value>true</value>
    </property>
    <property>
        <name>datanucleus.autoStartMechanism</name> 
        <value>SchemaTable</value>
    </property>
    <property>
        <name>datanucleus.schema.autoCreateTables</name>
        <value>true</value>
    </property>

    <property>
        <name>beeline.hs2.connection.user</name>
        <value>bigdata</value>
        </property>
     <property>
        <name>beeline.hs2.connection.password</name>
        <value>bigdata</value>
     </property>
</configuration>

9. 启动 metestore,启动 hive server

# 启动 metastore
nohup hive --service metastore >> /opt/apache-hive-2.1.1-bin/metastore.log 2>&1 &
# 启动 hive server
nohup hive --service hiveserver2 >> /opt/apache-hive-2.1.1-bin/hiveserver.log 2>&1 &
# 查看hive metastore 和 hiveserver2 是否启动成功
ps aux | grep hive

10. Hive 的两种访问方式

# 第一种访问方式
hive
# 第二种访问方式
# 其中 bigdata 和 bigdata 分别是在 hive-site.xml 配置文件中由 beeline.hs2.connection.user 和 beeline.hs2.connection.password 设置的。
beeline
!connect jdbc:hive2://bigdata:10000/default bigdata bigdata

注1:如果要使用beeline或JDBC连接hive时,遇到报错:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: xxx is not allowed to impersonate xxx ,需在hadoop的配置文件core-site.xml中加入以下配置(其中红色标志的“bigdata”提出你设置的beeline.hs2.connection.user),并重启hiveserver2:
<property>
    <name>hadoop.proxyuser.bigdata.groups</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.bigdata.hosts</name>
    <value>*</value>
</property>

注2:如果在删除数据库的时候出现 Table 'metastore.TXN_COMPONENTS' doesn't exist错误,说明Mysql中的metaStore数据库没有初始化成功,需要停止metastore/hiveserver2之后,删除mysql中的metastore数据库,然后使用下面的命令去重新初始化metastore:
schematool -dbType mysql -initSchema

注3:启动Beeline的时候,如果出现ls: cannot access /home/bigdata/apache-hive-2.1.0-bin/lib/hive-jdbc-*-standalone.jar: No such file or directory错误,执行下面的命令消除错误:
cp jdbc/hive-jdbc-2.1.0-standalone.jar lib/
当然,如果不执行该命令,也没有关系,不影响实际命令的执行。

启动 HIVE 过程总结:

1. 启动 hdfs 

/opt/hadoop-2.7.4/sbin/start-dfs.sh

2. 启动 yarn

/opt/hadoop-2.7.4/sbin/start-yarn.sh

3. 启动 historyserver

/opt/hadoop-2.7.4/sbin/mr-jobhistory-daemon.sh start historyserver

4. 启动 mysql 

sudo service mysqld start

5. 启动 hive 的 metastore 和 hiveserver2

# 启动 metastore
nohup hive --service metastore >> /opt/apache-hive-2.1.1-bin/metastore.log 2>&1 &
# 启动 hive server
nohup hive --service hiveserver2 >> /opt/apache-hive-2.1.1-bin/hiveserver.log 2>&1 &

备注: yarn 配置 https://my.oschina.net/u/1411151/blog/1609057

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!