hadoop集羣安裝Hive

hadoop集羣安裝Hive

1.準備

CentOS7+hadoop2.8.0+hive2.1.1

1.1安裝hadoop

參考鏈接: https://blog.csdn.net/qq_39615245/article/details/83049123

有三臺虛擬機,以 vm1,vm2,vm3代替,vm1位namenode,其他兩個爲datanade

1.2下載hive安裝包

下載鏈接: http://mirror.bit.edu.cn/apache/hive/stable-2/apache-hive-2.1.1-bin.tar.gz

1.3準備mysql數據庫

此處新建一臺虛擬機,命名爲docker,通過docker安裝mysql,IP地址爲:192.168.191.131

 

1.3.1 安裝docker

參考鏈接: https://blog.csdn.net/qq_39615245/article/details/82710100

1.3.2 通過docker安裝mysql

通過docker拉取mysql鏡像

docker pull mysql:5.6

等待下載完成後,我們就可以在本地鏡像列表裏查到REPOSITORY爲mysql,標籤爲5.6的鏡像。

docker images |grep mysql

mysql               5.6                 2c0964ec182a        3 weeks ago         329 MB

運行容器

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.621cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e

命令說明:

查看容器啓動情況-p 3306:3306: 將容器的 3306 端口映射到主機的 3306 端口。

-v -v $PWD/conf:/etc/mysql/conf.d: 將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。

-v $PWD/logs:/logs: 將主機當前目錄下的 logs 目錄掛載到容器的 /logs。

-v $PWD/data:/var/lib/mysql : 將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。

-e MYSQL_ROOT_PASSWORD=123456: 初始化 root 用戶的密碼。

查看鏡像啓動狀態:

runoob@runoob:~/mysql$ docker ps

CONTAINER ID    IMAGE         COMMAND                  ...  PORTS                    NAMES21cb89213c93    mysql:5.6    "docker-entrypoint.sh"    ...  0.0.0.0:3306->3306/tcp   mymysql

安裝成功:用戶名root 密碼:123456 本地可連接

 

2.安裝hive

2.1 上傳並解壓hive

通過ftp工具上傳hive包到/opt/hive,並解壓到當前文件夾,解壓命令爲:

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

2.2 配置環境變量

vi /etc/profile

在配置文件左後增加hive相關的環境變量配置

export  JAVA_HOME=/opt/java/jdk1.8.0_121

export  HADOOP_HOME=/opt/hadoop/hadoop-2.8.0

export  HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop 

export  HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native 

export  HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib" 

export  HIVE_HOME=/opt/hive/apache-hive-2.1.1-bin

export  HIVE_CONF_DIR=${HIVE_HOME}/conf 

export  CLASS_PATH=.:${JAVA_HOME}/lib:${HIVE_HOME}/lib:$CLASS_PATH

export  PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin:$PATH 

保存後,執行命令使其生效:

  source  /etc/profile

2.3 配置hive

以下按照流程一步步走即可

使用hadoop新建兩個hdfs目錄

$HADOOP_HOME/bin/hadoop   fs   -mkdir   -p   /user/hive/warehouse

$HADOOP_HOME/bin/hadoop   fs   -mkdir  -p   /tmp/hive/

 給剛纔新建的目錄賦予讀寫權限,執行命令:

$HADOOP_HOME/bin/hadoop   fs   -chmod   777   /user/hive/warehouse 

$HADOOP_HOME/bin/hadoop   fs   -chmod  777   /tmp/hive

進入/opt/hive/apache-hive-2.1.1-bin/conf目錄,新建hive-site.xml文件並配置

cd   /opt/hive/apache-hive-2.1.1-bin/conf

將hive-default.xml.template文件複製一份,並且改名爲hive-site.xml,命令是:

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

通過ftp將hive-site.xml下載到本地,打開進行配置否覆蓋vm1上的原文件

將hive-site.xml文件中的所有

${system:java.io.tmpdir}替換爲/opt/hive/tmp,

${system:user.name}都替換爲root

搜索javax.jdo.option.ConnectionURL,將該name對應的value修改爲MySQL的地址,例如:

     <name>javax.jdo.option.ConnectionURL</name>  

      <value>jdbc:mysql://192.168.191.131:3306/hive?createDatabaseIfNotExist=true</value>

 搜索javax.jdo.option.ConnectionDriverName,將該name對應的value修改爲MySQL驅動類路徑,例如:

   <property> 

         <name>javax.jdo.option.ConnectionDriverName</name> 

        <value>com.mysql.jdbc.Driver</value> 

  </property>      

搜索javax.jdo.option.ConnectionUserName,將對應的value修改爲MySQL數據庫登錄名:

     <name>javax.jdo.option.ConnectionUserName</name>

     <value>root</value>

搜索javax.jdo.option.ConnectionPassword,將對應的value修改爲MySQL數據庫的登錄密碼:

     <name>javax.jdo.option.ConnectionPassword</name>

     <value>123456</value>

搜索hive.metastore.schema.verification,將對應的value修改爲false:

    <name>hive.metastore.schema.verification</name>

     <value>false</value>

將更改好的hive-site.xml文件覆蓋原文件

將MySQL驅動包上載到lib目錄

 

進入目錄 /opt/hive/apache-hive-2.1.1-bin/conf

cd    /opt/hive/apache-hive-2.1.1-bin/conf

將hive-env.sh.template文件複製一份,並且改名爲hive-env.sh,命令是:

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

打開hive-env.sh配置並且添加以下內容:

export  HADOOP_HOME=/opt/hadoop/hadoop-2.8.0

export  HIVE_CONF_DIR=/opt/hive/apache-hive-2.1.1-bin/conf

export  HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-2.1.1-bin/lib

對MySQL數據庫進行初始化,進入到hive的bin目錄 執行命令:

cd   /opt/hive/apache-hive-2.1.1-bin/bin

對數據庫進行初始化,執行命令:

schematool   -initSchema  -dbType  mysql

執行成功後,mysql數據庫中的hive庫裏已經有一堆表創建好了

3 啓動hive

      進入到hive的bin目錄執行命令:

   cd   /opt/hive/apache-hive-2.1.1-bin/bin

       執行hive腳本進行啓動,執行命令:

./hive

hive>  出現即可

4 測試

創建數據庫

create database hive_test

返回ok說明創建成功

use hive_test;

創建表

create table student(id int,name string) row format delimited fields terminated by '\t';

返回ok說明創建成功

將文件數據寫入表中

 (1)在/opt/hive目錄內新建一個文件

   執行Linux命令(最好是重新打開一個終端來執行):

   touch    /opt/hive/student.txt

  往文件中添加以下內容:

001 zhangsan

002 lisi

003 wangwu

004 zhaoliu

005 chenqi

說明:ID和name直接是TAB鍵,不是空格,因爲在上面創建表的語句中用了terminated  by  '\t'所以這個文本里id和name的分割必須是用TAB鍵,還有就是行與行之間不能有空行,否則下面執行load,會把NULL存入表內,該文件要使用unix格式,如果是在windows上用txt文本編輯器編輯後在上載到服務器上,需要用工具將windows格式轉爲unix格式,例如可以使用Notepad++來轉換。

完成上面的步驟後,在磁盤上/opt/hive/student.txt文件已經創建成功,文件中也已經有了內容,在hive命令行中執行加載數據的hive命令:

load data local inpath '/opt/hive/student.txt' into table hive_test.student;

執行命令,查看是否把剛纔文件中的數據寫入成功,hive命令是:

select  *  from    student;

 

說明:因爲什麼的操作使用use  hive_test;指定了數據庫,所以這裏直接用表名student,如果沒有指定數據庫,請把這個語句換成

select  *  from  hive_test.student;

數據出現即可

http://192.168.191.133:50070/explorer.html#/user/hive/warehouse/hive_test.db

 

安裝hive成功

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