基於Hadoop分佈式集羣部署Hive2.3

1. 基於docker安裝mysql

由於自己以前在Ubuntu kylin 16.04的系統上安裝mysql5.7一直有問題,後來學會了使用docker安裝mysql。覺得這個方法很方便,所以這次繼續使用docker安裝mysql
① 安裝docker
參考自己以前撰寫的博客:Ubuntu Kylin 16.04 安裝docker(使用阿里鏡像)

② 使用docker安裝mysql並完成配置
參考自己以前撰寫的博客:Ubuntu16.04使用docker安裝MySQL

③ 遇到的問題
很奇怪的是,自己以前在輸入mysql -u root -p,嘗試連接mysql時,並沒有出現任何問題。這次卻出現了以下錯誤:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

按照百度的各種方法,都不適合自己。後來關閉mysql之後,再重新啓動進入,問題得到解決。PS:這就是一個謎一樣的問題~

$ sudo docker stop mysqldb   # 關閉名爲mysqldb的容器
$ sudo docker start mysqldb   # 開啓並執行名爲mysqldb的容器
$ sudo docker exec -it mysqldb /bin/bash
$ mysql -u root -p  # 連接mysql,開啓mysql的shell交互模式

2. 爲hive配置mysql

① 添加並設置hive用戶、數據庫
使用以下命令添加並設置hive用戶、數據庫:

mysql> create user hive identified by 'hive';    # 創建一個用戶名爲hive,密碼爲hive的數據庫
mysql> create database hive;  # 創建一個叫做hive的數據庫
mysql> grant all privileges on hive.* to 'hive'@'%';    # 給hive用戶授權
mysql> flush privileges;     # 刷盤生效

② 退出mysql並重啓mysql
使用以下命令退出mysql並重新啓動mysql:

$ exit   # 退出mysql的shell交互模式
$ exit   # 退出名爲mysqldb的容器
$ sudo docker stop mysqldb   # 關閉名爲mysqldb的容器
$ sudo docker start mysqldb   # 開啓並執行名爲mysqldb的容器
$ sudo docker exec -it mysqldb /bin/bash
$ mysql -u root -p  # 連接mysql,開啓mysql的shell交互模式

③ 查看剛添加的hive用戶授權
使用以下命令查看剛添加的hive用戶授權,已驗證是否添加成功:

mysql> select user,host from mysql.user;

在這裏插入圖片描述

④ 設置hive數據庫爲utf-8編碼
使用以下命令設置hive數據庫爲utf-8編碼,避免後續的亂碼問題:

mysql> alter database hive character set utf8; 

3. 下載並解壓縮hive

① 下載hive
下載地址:Hive鏡像下載
本人選擇的是hive-2.3.3 版本,下載的是該目錄下的apache-hive-2.3.3-bin.tar.gz

② 解壓縮apache-hive-2.3.3-bin.tar.gz
使用以下命令解壓縮apache-hive-2.3.3-bin.tar.gz,設置文件權限爲0777,並將其放到合適的目錄:

$ sudo tar -zxvf apache-hive-2.3.3-bin.tar.gz
$ sudo chmod -R 0777 apache-hive-2.3.3-bin
$ sudo cp -rf apache-hive-2.3.3-bin /home/cephlee/

本人在這之後,還修改了文件名爲:hive-2.3.3

4. 配置hive

① 添加hive系統環境變量
使用gedit命令向~/.bashrc中添加hive系統環境變量:

$ sudo gedit ~/.bashrc

添加以下內容:

export HIVE_HOME=/home/cephlee/hive-2.3.3
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export PATH=${HIVE_HOME}/bin:$PATH

使用source 命令使其生效:

$ source ~/.bashrc

使用以下命令,查看hive系統環境變量配置是否生效:

$ hive --version

在這裏插入圖片描述
② 在hadoop添加hive的相關文件目錄
使用以下命令在hadoop添加hive的相關文件目錄,並設置相應權限:

$ hadoop fs -mkdir /user/hive/warehouse
$ hadoop fs -mkdir /user/hive/tmp
$ hadoop fs -mkdir /user/hive/log
$ hadoop fs -chmod -R 0777 /user/hive

③ 修改hive-env.sh文件
進入hive-2.3.3/conf目錄,執行以下命令:

$ cp hive-env.sh.template hive-env.sh

打開hive-env.sh文件,向其中添加以下內容:

# Hive Configuration Directory can be controlled by:
export JAVA_HOME=/usr/local/jdk18
export HADOOP_HOME=$HADOOP_HOME
export HIVE_HOME=/home/cephlee/hive-2.3.3
export HIVE_CONF_DIR=${HIVE_HOME}/conf 

# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=${HIVE_HOME}/lib

④ 修改hive-site.xml文件
進入hive-2.3.3/conf目錄,執行以下命令:

$ cp hive-default.xml.template hive-site.xml

打開hive-site.xml文件,除了頭部的xml信息,其他內容都清空。添加相關配置後,整個文件內容爲:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You 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.
-->
<configuration>
	<!-- 設置 hive倉庫的HDFS上的位置 -->
	<property>
	    <name>hive.exec.scratchdir</name>
	    <value>/user/hive/tmp</value>
	</property>
	<!--資源臨時文件存放位置 -->
	<property>
	    <name>hive.metastore.warehouse.dir</name>
	    <value>/user/hive/warehouse</value>
	</property>
	<!-- 設置日誌位置 -->
	<property>
	    <name>hive.querylog.location</name>
	    <value>/user/hive/log</value>
	</property>
	<property>
	    <name>javax.jdo.option.ConnectionURL</name>
	    <value>jdbc:mysql://192.168.202.34:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;allowPublicKeyRetrieval=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> 
</configuration>

⑤ 下載JDBC複製到對應目錄
前往官網下載JDBC驅動,官方網址Download Connector/J
在該頁面中,點擊下圖中的Looking for previous GA versions?,下載歷史版本:
在這裏插入圖片描述
選擇Platform Independent (Architecture Independent), ZIP Archive進行下載:
在這裏插入圖片描述

解壓縮mysql-connector-java-5.1.47.zip,將mysql-connector-java-5.1.47-bin.jar複製到hive-2.3.3/lib目錄。

5. 初始化並啓動hive

① 初始化hive
從 Hive 2.1 版本開始, 我們需要先運行 schematool 命令來執行初始化操作。

$ schematool -dbType mysql -initSchema

本人第一次初始化失敗,遇到以下錯誤:
在這裏插入圖片描述
網上百度以後,參考博客:關於JDBC連接數據庫時出現的Public Key Retrieval is not allowed錯誤
使用方法二:連接數據庫的url中,加上allowPublicKeyRetrieval=true參數,在hive-site.xml<name>javax.jdo.option.ConnectionURL</name>中的value中,添加allowPublicKeyRetrieval=true
使得該問題得意解決。
PS:上面的hive-site.xml的配置是修改以後的最新配置,讀者無需再修改hive-site.xml

再次執行命令,初始化成功:
在這裏插入圖片描述
② 查看初始化信息
執行以下命令,查看hive初始化信息:

$ schematool -dbType mysql -initInfo

在這裏插入圖片描述

也可以進入mysql,查看hive中的表格信息:

mysql> use hive;
mysql> show tables;

信息如下(只有首尾的部分信息):
在這裏插入圖片描述
在這裏插入圖片描述

③ 啓動hive
直接輸入hive命令,啓動hive:

$ hive

啓動信息如下:
在這裏插入圖片描述ruxia

6. 簡單的使用hive

在hive中創建一個表格,已驗證hive運行是否正常:

hive> create table testHive(
         id int,
        name string
        );

創建成功後,再查看剛剛創建的表格:

hive> show tables;

顯示信息如下:
在這裏插入圖片描述

7. slaves節點的配置

之前的步驟1-6均在hadoop的master節點上配置,現在需要配置slaves節點。
① 使用scp命令,拷貝hive至salves節點

$ scp -r hive-2.3.3 monserver:/home/cephlee
$ scp -r hive-2.3.3 osdserver1:/home/cephlee
$ scp -r hive-2.3.3 osdserver2:/home/cephlee
$ scp -r hive-2.3.3 osdserver3:/home/cephlee

② 添加hive系統環境變量
參考以前的步驟,在slaves節點上的~/.bashrc文件中添加系統環境變量,並使用source命令使其生效。
③ 在slaves節點的中hive-site.xml 添加以下配置:

<property>  
    <name>hive.metastore.uris</name>  
    <value>thrift://192.168.202.34:9083</value>  
</property>

④ 啓動啓動metastore服務
在使用slaves節點訪問 hive 之前,在master節點中,執行 hive --service metastore & 來啓動metastore服務 。
在這裏插入圖片描述
metastore服務對應的進程爲6906 RunJar
在這裏插入圖片描述
⑤ slaves節點啓動hive並執行簡單的hive命令

$ hive
hive>show tables;

發現在master節點上創建的表,可以在slaves節點中看到:
在這裏插入圖片描述

感謝使用過的參考鏈接:
mysql5.7.18安裝、Hive2.1.1安裝和配置(基於Hadoop2.7.3集羣)
hive2.1.1 部署安裝
在Hadoop分佈式集羣中安裝hive

至此,基於Hadoop分佈式集羣的hive2.3安裝成功!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章