CentOS 6.9 中 搭建 Hive

1. 解壓 hive 安裝包java

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

2. 安裝 mysql node

sudo yum install mysql-server

3. 安裝 mysql-connectormysql

sudo yum install mysql-connector-java

4. 創建 mysql-connector 連接sql

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 服務 是否啓動成功express

ps aux | grep mysql

6. 修改 mysql 數據庫的 root 用戶的密碼apache

# 使用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 環境變量bash

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.xmlapp

  • 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 serverless

# 啓動 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

相關文章
相關標籤/搜索