Hadoop大數據組件安裝 史上最詳細教程 手把手教會你安裝

Hadoop安裝--大數據組件安裝--史上最完整教程--手把手教會你安裝 

——徹底揭開大數據技術的面紗,讓小白徹底進入大數據技術領域

安裝的Hadoop的生態圈組件有如下幾個(以後會不斷補充完善起來了)。

(1)Hadoop(單機模式獨立,僞分佈式僞分佈式,全分佈式全分佈式)

(2)Zookeeper(單機模式,全分佈式)

(3)Hadoop的HA模式

(4)Hive

(5)HBase安裝(單機模式,HA模式)

(6)Flume

(7)Sqoop

獲取本教程所有安裝包,百度網盤鏈接:https://pan.baidu.com/s/1TedUdOETU8bSRMIuIr_9SQ 
提取碼:b5qg 

注意:我使用的安裝包是目前較新的,適合當下企業需求(時間:2018.11.22)。

1.1 Hadoop的安裝模式

使用Hadoop才能更好地理解其特點,在使用之前,首先要了解Hadoop的安裝模式,Hadoop的安裝模式分爲單機模式(Standalone)、僞分佈式(Pseudo-Distributed)、全分佈式(Fully-Distributed)三種模式。在虛擬機qfedu上安裝Hadoop。

1.1.1 Hadoop的單機模式

Hadoop的默認模式是單機模式。在不瞭解硬件安裝環境的情況下,Hadoop第一次解壓其源碼包時,它保守地選擇了最小配置。Hadoop會完全運行在本地。因此它不需要與其他節點進行交互,那麼它也就不使用HDFS,也不加載任何Hadoop的守護進程。單機模式不需要啓動任何服務即可使用,一般只用於調試。Linux環境下Hadoop單機模式的安裝過程如下。

1.安裝JDK

一般安裝Oracle JDK,這裏安裝1.8版本的JDK。

(1)將JDK安裝包jdk-8u121-linux-x64.rpm放到/root/Downloads/目錄下。

(2)切換到root用戶,解壓JDK安裝包。

[qfedu@localhost ~]$ su root

[root@localhost ~]# rpm -ivh /root/Downloads/jdk-8u121-linux-x64.rpm

(3)屏蔽CentOS7自帶的JDK。

[root@bogon ~]# mv /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 /usr/lib

2.安裝Hadoop

(1)將安裝包hadoop-2.7.3.tar.gz,放到虛擬機中的/root/Downloads/目錄下,並解壓到/usr/local/下。

[root@localhost ~]# tar -zxvf /root/Downloads/hadoop-2.7.3.tar.gz -C /usr/local/

(2)打開文件/etc/profile,配置hadoop環境變量。

[root@localhost ~]# vi /etc/profile

(3)編輯/etc/profile時,依次按下G鍵,o鍵,將光標移動到文件末尾,添加如下內容。編輯完成後,先按Esc鍵,後按:wq保存退出。

# Hadoop environment variables

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

export HADOOP_HOME=/usr/local/hadoop-2.7.3/

export PATH=$PATH:JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

(4)使配置文件生效。

 [root@localhost ~]# source /etc/profile    

3.測試Hadoop是否安裝成功

(1)查看Hadoop版本,輸入以下內容。

[root@localhost ~]# hadoop version

輸出如下內容即正確:

Hadoop 2.7.3

(2)查看hadoop安裝路徑,輸入如下內容。

[root@localhost ~]# which hadoop

輸出如下內容即正確:

/usr/local/hadoop-2.7.3/bin/hadoop

1.1.2 Hadoop的僞分佈式

上一小結對Hadoop單機模式的安裝進行了講解,下面對Hadoopd僞分佈式的安裝進行講解。這裏會用到對JDK和Hadoop環境變量的配置,配置方式和上一小結相同,不再贅述。下面講述在配置環境變量文件生效後,對Hadoop配置文件的配置及其後面的步驟。

1.配置hadoop-env.sh文件

(1)切換到/usr/local/hadoop-2.7.3/etc/hadoop/目錄下,打開hadoop-env.sh文件。

[root@localhost ~]# cd /usr/local/hadoop-2.7.3/etc/hadoop/

[root@localhost hadoop]# vi hadoop-env.sh

(2)在hadoop-env.sh文件中,將export JAVA_HOME=${JAVA_HOME}修改爲以下內容。

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

2.配置core-site.xml文件

(1)打開core-site.xml文件

[root@localhost hadoop]# vi core-site.xml

(2)在core-site.xml文件中輸入以下內容。

<configuration>

    <!-- 指定文件系統的名稱 -->

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://localhost:9000</value>

    </property>

</configuration>

3.配置HDFS的hdfs-site.xml文件

(1)打開hdfs-site.xml文件。

[root@localhost hadoop]# vi hdfs-site.xml

(2)在hdfs-site.xml文件中輸入以下內容。

<configuration>

    <!-- 配置HDFS塊的副本數(默認副本數是3,最大副本數是512) -->

    <property>

       <name>dfs.replication</name>

       <value>1</value>

    </property>

</configuration>

4.配置MapReduce的mapred-site.xml文件

(1)創建mapred-site.xml文件。

[root@localhost hadoop]# vi mapred-site.xml

(2)在mapred-site.xml文件中輸入以下內容。

<configuration>

    <!-- 指定MapReduce的運行框架 -->

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>

5.配置Yarn的yarn-site.xml文件

(1)打開yarn-site.xml文件。

[root@localhost hadoop]# vi yarn-site.xml

(2)在yarn-site.xml文件中輸入以下內容。

<configuration>

    <!-- 配置NodeManager啓動時加載Shuffle服務 -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

</configuration>

6.格式化HDFS文件系統

[root@localhost hadoop]# hdfs namenode -format

...

18/11/09 19:53:26 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at bogon/192.168.11.11

************************************************************/

7.啓動Hadoop集羣

(1)啓動Hadoop集羣(分別啓動HDFS和Yarn)。

提示:當出現password:時,輸入密碼按下回車鍵。

[root@localhost hadoop]# start-dfs.sh

[root@localhost hadoop]# start-yarn.sh

(2)用jps命令查看Hadoop集羣的相關進程。

[root@localhost hadoop]# jps 

6208 ResourceManager

5674 NameNode

6028 SecondaryNameNode

5823 DataNode

6527 NodeManager

6591 Jps

從上面結果可以看到相關進程全部啓動。

8.檢測

(1)上傳當前文件夾下的mapred-site.xml.template文件到HDFS的/目錄下。

[root@localhost hadoop]# hdfs dfs -put ./mapred-site.xml.template /

(2)查看上傳的mapred-site.xml.template文件。

[root@localhost hadoop]# hdfs dfs -cat /mapred-site.xml.template

(3)查看本地mapred-site.xml.template文件。

[root@localhost hadoop]# cat mapred-site.xml.template

如果兩個文件的內容一致,表明Hadoop的僞分佈式集羣搭建成功。

1.1.3 Hadoop的全分佈式

重要提示:在Hadoop全分佈式搭建前,需要先關閉hadoop集羣,關閉命令如下。

[root@localhost hadoop]# stop-dfs.sh

[root@localhost hadoop]# stop-yarn.sh

Hadoop全分佈式搭建規劃,如表3.2所示。

表3.2 Hadoop全分佈式搭建規劃

主機名

IP地址

Hadoop進程

qf01

192.168.11.11

NameNode、DataNode、ResourceManager、NodeManager

qf02

192.168.11.12

DataNode、NodeManager

qf03

192.168.11.13

DataNode、NodeManager、SecondaryNameNode

本書的Hadoop全分佈式搭建基於Hadoop僞分佈式,具體步驟如下。

1.克隆虛擬機

克隆3臺虛擬機qf01、qf02、qf03,具體克隆步驟,見第1章 1.5.2 克隆。

寫步驟

2.修改主機名

分別修改虛擬機qf01、qf02、qf03的主機名(hostname)。

(1)分別打開虛擬機qf01、qf02、qf03的/etc/hostname文件。

[root@localhost ~]# vi /etc/hostname

(2)分別修改主機名,具體做法如下。

①將虛擬機qf01的hostname文件中的內容替換爲qf01。

②將虛擬機qf02的hostname文件中的內容替換爲qf02。

③將虛擬機qf03的hostname文件中的內容替換爲qf03。

3.修改網絡設置

(1)分別打開虛擬機qf01、qf02、qf03的/etc/sysconfig/network-scripts/ifcfg-ens33文件。

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

(2)分別修改網絡設置,具體做法如下。

①將虛擬機qf01的ifcfg-ens33文件中的IPADDR=192.168.11.1修改爲IPADDR=192.168.11.11。

②將虛擬機qf02的ifcfg-ens33文件中的IPADDR=192.168.11.1修改爲IPADDR=192.168.11.12。

③將虛擬機qf03的ifcfg-ens33文件中的IPADDR=192.168.11.1修改爲IPADDR=192.168.11.13。

(3)重啓虛擬機qf01、qf02、qf03。

單擊VMware Workstation中的▼下拉菜單,在出現的下拉菜單中,單擊“重新啓動客戶機”選項。

4.修改/etc/resolv.conf文件

resolv.conf是指DNS域名解析配置文件。

(1)分別打開虛擬機qf01、qf02、qf03的/etc/resolv.conf文件。

[root@qf01 ~]# vi /etc/resolv.conf

[root@qf02 ~]# vi /etc/resolv.conf

[root@qf03 ~]# vi /etc/resolv.conf

(2)分別將文件中的內容替換爲以下內容。

nameserver 192.168.11.2

5.分別關閉虛擬機qf01、qf02、qf03的防火牆

[root@localhost ~]# systemctl stop firewalld.service

臨時關閉防火牆

6.配置SSH免密登錄

此處的SSH免密登錄是指虛擬機qf01通過SSH免密登錄虛擬機qf02、qf03。

(1)分別刪除虛擬機qf01、qf02、qf03的~/.ssh目錄。注意:在使用rm -rf命令時,要特別小心,避免誤刪文件。

[root@qf01 ~]# rm -rf .ssh

[root@qf02 ~]# rm -rf .ssh

[root@qf03 ~]# rm -rf .ssh

(2)在虛擬機qf01上新建SSH公私祕鑰對。

[root@qf01 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

(3)在虛擬機qf01上修改/etc/hosts文件。

①打開/etc/hosts文件。

[root@qf01 ~]#  vi /etc/hosts

②在文件末尾,換行添加以下內容。

192.168.11.11  qf01

192.168.11.12  qf02

192.168.11.13  qf03

(4)在虛擬機qf01上配置免密登錄虛擬機qf01、qf02、qf03。

在實際工作中,ssh-copy-id命令的作用:複製本地用戶的公鑰到遠程主機指定用戶的認證庫中,實現本地用戶通過SSH免密登錄遠程主機指定用戶。本書進行模擬操作,實現虛擬機qf01(本地root用戶)通過SSH免密登錄虛擬機qf01、qf02、qf03(3臺遠程主機的root用戶)。

[root@qf01 ~]# ssh-copy-id root@qf01

[root@qf01 ~]# ssh-copy-id root@qf02

[root@qf01 ~]# ssh-copy-id root@qf03

提示:出現(yes/no)?,輸入yes,按下回車鍵。

(5)將虛擬機qf01的hosts文件分發到虛擬機qf02、qf03。

爲了便於在虛擬機qf01向虛擬機qf02、qf03分發目錄或文件,此處編寫一個Shell腳本xsync.sh。

①在虛擬機qf01上的/usr/local/bin目錄下新建xsync.sh文件。在/usr/local/bin目錄下的Shell腳本文件可以在任意位置被調用,使用起來比較方便。

[root@qf01 ~]# cd /usr/local/bin

[root@qf01 bin]# vi xsync.sh

②在文件中輸入以下內容。

#!/bin/bash

if [ $# -lt 1 ] ; then echo no params ; exit ; fi

user=`whoami`

# 取出目錄(或文件)名稱

filename=`basename $1`

dir=`dirname $1`

# 切換到目錄(或文件)所在的路徑下

cd $dir

# 獲取當前路徑的絕對路徑

fullpath=`pwd -P`

for (( i=2; i<=3 ; i++ )) ; do

    tput setaf 5

    echo ============ qf0$i $@ ============

    tput setaf 9

    rsync -lr $filename $user@qf0$i:$fullpath

done

其中,rsync命令的作用是:實現本地用戶和遠程主機指定用戶的文件同步和本地不同路徑下文件的同步。

③爲xsync.sh文件的所有者添加執行權限。

[root@qf01 bin]# chmod u+x xsync.sh

④使用xsync.sh將虛擬機qf01的/etc/hosts文件分發到虛擬機qf02、qf03。

[root@qf01 ~]# xsync.sh /etc/hosts

(6)驗證SSH免密登錄是否配置成功。

[root@qf01 bin]# ssh qf02

出現如下內容,表明虛擬機qf01通過SSH成功登錄虛擬機qf02。

[root@qf02 ~]#

輸入exit,按下回車鍵,退回到虛擬機qf01。

7.修改相關配置文件

(1)在虛擬機qf01上,切換到/usr/local/hadoop-2.7.3/etc/hadoop/目錄下。

[root@qf01 ~]# cd /usr/local/hadoop-2.7.3/etc/hadoop/

(2)配置core-site.xml文件。

①打開core-site.xml文件。

 [root@qf01 hadoop]# vi core-site.xml

②將core-site.xml文件中的內容替換爲以下內容。

<configuration>

    <!-- 指定文件系統的名稱-->

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://qf01:9000</value>

    </property>

    <!-- 配置Hadoop運行產生的臨時數據存儲目錄 -->

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/tmp/hadoop-qf01</value>

    </property>

    <!-- 配置操作HDFS的緩存大小 -->

    <property>

        <name>io.file.buffer.size</name>

        <value>4096</value>

    </property>

</configuration>

(3)配置hdfs-site.xml文件。

①打開hdfs-site.xml文件。

[root@qf01 hadoop]# vi hdfs-site.xml

②將hdfs-site.xml文件中的內容替換爲以下內容。

<configuration>

    <!-- 配置HDFS塊的副本數(全分佈模式默認副本數是3,最大副本數是512) -->

    <property>

        <name>dfs.replication</name>

        <value>3</value>

    </property>

    <!-- 設置HDFS塊的大小 -->

    <property>

        <name>dfs.blocksize</name>

        <value>134217728</value>

    </property>

    <!-- 配置HDFS元數據的存儲目錄 -->

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>/home/hadoopdata/dfs/name</value>

    </property>

    <!-- 配置HDFS真正的數據內容(數據塊)的存儲目錄 -->

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>/home/hadoopdata/dfs/data</value>

    </property>

    <!-- 配置HDFS的NameNode的HTTP地址 -->

    <property>

       <name>dfs.namenode.http-address</name>

       <value>qf01:50070</value>

    </property>

    <!-- 配置HDFS的Secondary Namenode的HTTP地址 -->

    <property>

       <name>dfs.namenode.secondary.http-address</name>

       <value>qf03:50090</value>

    </property>

    <!-- 開啓通過Web操作HDFS -->

    <property>

        <name>dfs.webhdfs.enabled</name>

        <value>true</value>

    </property>

    <!-- 關閉HDFS文件的權限檢查 -->

    <property>

        <name>dfs.permissions.enabled</name>

        <value>false</value>

    </property>

</configuration>

(4)配置mapred-site.xml文件。

①打開mapred-site.xml文件。

[root@qf01 hadoop]# vi mapred-site.xml

②將mapred-site.xml文件中的內容替換爲以下內容。

<configuration>

    <!-- 指定MapReduce的運行框架 -->

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>

(5)配置yarn-site.xml。

①打開yarn-site.xml文件。

[root@qf01 hadoop]# vi yarn-site.xml

②將yarn-site.xml文件中的內容替換爲以下內容。

<configuration>

    <!-- 指定啓動Yarn的ResourceManager服務的主機 -->

    <property>

        <name>yarn.resourcemanager.hostname</name>

        <value>qf01</value>

    </property>

    <!-- 配置NodeManager啓動時加載Shuffle服務 -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <!-- 指定ResourceManager的內部通信地址 -->

    <property>

        <name>yarn.resourcemanager.address</name>

        <value>qf01:8032</value>

    </property>

    <!-- 指定ResourceManager的Scheduler的內部通信地址 -->

    <property>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>qf01:8030</value>

    </property>

    <!-- 指定ResourceManager的Resource-Tracker的內部通信地址 -->

    <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>qf01:8031</value>

    </property>

    <!-- 指定ResourceManager的Admin的內部通信地址 -->

    <property>

        <name>yarn.resourcemanager.admin.address</name>

        <value>qf01:8033</value>

    </property>

    <!-- 指定ResourceManager的WebUI的內部通信地址 -->

    <property>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>qf01:8088</value>

    </property>

</configuration>

(6)設置從節點(slave),即修改slaves文件。

①打開slaves文件。

 [root@qf01 hadoop]# vi slaves

②此處填寫所有需要配置成從節點的主機名。具體做法:將slaves文件中的內容替換爲以下內容。注意:每個主機名佔一行。

qf01

qf02

qf03

8.分發配置文件

[root@qf01 hadoop]# xsync.sh /usr/local/hadoop-2.7.3/etc/hadoop

9.初始化HDFS

初始化HDFS,只能進行一次,如果初始化HDFS不成功,需要重新搭建。由於Hadoop集羣搭建涉及細節較多,建議在初始化HDFS之前,先對每個虛擬機拍攝快照。拍攝快照後,在虛擬機qf01的終端,輸入以下命令,初始化HDFS。

[root@qf01 hadoop]# hdfs namenode -format

倒數第9行,出現INFO common.Storage: common.Storage: Storage directory /home/hadoopdata/dfs/name has been successfully formatted,表明初始化HDFS已成功。

 

重啓

10.啓動和查看Hadoop進程

(1)啓動Hadoop進程。

[root@localhost hadoop]# start-dfs.sh

[root@localhost hadoop]# start-yarn.sh

(2)查看Hadoop進程。

①在虛擬機qf01中查看Hadoop進程。

[root@qf01 hadoop]# jps

17089 ResourceManager

17427 Jps

16917 SecondaryNameNode

16699 DataNode

17196 NodeManager

16590 NameNode

以17089 ResourceManager爲例,17089是指進程ID。

②在虛擬機qf02中查看Hadoop進程。

[root@qf02 hadoop]# jps

3140 Jps

2968 NodeManager

2877 DataNode

③在虛擬機qf03中查看Hadoop進程。

[root@qf03 hadoop]# jps

16512 NodeManager

16682 Jps

16412 DataNode

如果看到規劃的Hadoop進程均已啓動,表明Hadoop全分佈式搭建成功。

注意:由於只在root用戶下搭建了Hadoop全分佈式,再次啓動虛擬機時,需要切換到root用戶下,進行相關操作。

(3)編寫腳本查看Hadoop進程。

目前在3臺虛擬機上查看Hadoop進程,操作相對簡單。在實際工作中,可能會查看幾十臺服務器上的Hadoop進程,操作起來就比較煩瑣。以當前的Hadoop全分佈式集羣爲例,可以編寫Shell腳本xcmd.sh來簡化操作。

xcmd.sh的具體用途:在虛擬機qf01上查看虛擬機qf01、qf02、qf03上執行相同命令操作的結果。編寫xcmd.sh腳本和查看Hadoop進程的步驟如下。

①在虛擬機qf01上的/usr/local/bin目錄下新建xcmd.sh文件,輸入以下內容。

#!/bin/bash

if [ $# -lt 1 ] ; then echo no params ; exit ; fi

for (( i=1 ; i<=3 ; i++ )) ; do

    tput setaf 5

    echo ============ qf0$i $@ ============

    tput setaf 9

    ssh qf0$i "$@"

done

②爲xcmd.sh文件的所有者添加執行權限。

[root@qf01 hadoop]# chmod u+x xcmd.sh

③在虛擬機qf01上,使用xcmd.sh腳本查看Hadoop的所有進程,具體如下。

[root@qf01 bin]# xcmd.sh jps

============ qf01 jps ============

25604 ResourceManager

25718 NodeManager

25147 NameNode

26221 Jps

25295 DataNode

============ qf02 jps ============

10731 Jps

10252 DataNode

10414 NodeManager

============ qf03 jps ============

21699 DataNode

21813 SecondaryNameNode

21948 NodeManager

22270 Jps

 

2.1 Zookeeper的安裝和常用命令

本書使用的是3.4.10版本的Zookeeper,或者從官網下載,網址爲http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10。用Java編寫的Zookeeper運行在JVM上,需要提前安裝JDK並配置好Java環境(在第3章 3.2 節已完成)。本書主要講述Zookeeper的兩種安裝模式:單機模式和全分佈式。

2.1.1 Zookeeper單機模式

Zookeeper單機模式,安裝步驟如下。

(1)將Zookeeper安裝包zookeeper-3.4.10放到虛擬機qf01的/root/Downloads/目錄下,切換到root用戶,新建目錄/mysoft,解壓Zookeeper安裝包到/mysoft目錄下。

[root@qf01 ~]# mkdir /mysoft

[root@qf01 ~]# tar -zxvf /root/Downloads/zookeeper-3.4.10.tar.gz -C /mysoft/

(2)切換到/mysoft目錄下,將zookeeper-3.4.10重命名爲zookeeper。

[root@qf01 ~]# cd /mysoft/

[root@qf01 mysoft]# mv zookeeper-3.4.10 zookeeper

(3)打開/etc/profile文件,配置Zookeeper環境變量。

[root@qf01 mysoft]# vi /etc/profile

在文件末尾添加如下三行內容。

# Zookeeper environment variables

export ZOOKEEPER_HOME=/mysoft/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

(4)使環境變量生效。

[root@qf01 mysoft]# source /etc/profile

(5)將文件/mysoft/zookeeper/conf/zoo_sample.cfg重命名爲zoo.cfg(Zookeeper的配置文件)。

[root@qf01 mysoft]# cd /mysoft/zookeeper/conf/

[root@qf01 conf]# mv zoo_sample.cfg zoo.cfg

(6)啓動Zookeeper的服務器。

[root@qf01 conf]# zkServer.sh start

ZooKeeper JMX enabled by default

Using config: /mysoft/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

(7)檢測Zookeeper服務器是否啓動成功有兩種方法。

①查看Zookeeper服務器的啓動狀態。

[root@qf01 conf]# zkServer.sh status

出現如下內容表明Zookeeper服務器啓動成功。

ZooKeeper JMX enabled by default

Using config: /mysoft/zookeeper/bin/../conf/zoo.cfg

Mode: standalone

②用jps命令查看Zookeeper服務器的QuorumPeerMain進程是否啓動。

[root@qf01 conf]# jps

11716 Jps

10412 QuorumPeerMain

出現QuorumPeerMain進程表明Zookeeper服務器啓動成功。QuorumPeerMain是zookeeper集羣的啓動入口。

(8)關閉Zookeeper服務器。

[root@qf01 conf]# zkServer.sh stop

ZooKeeper JMX enabled by default

Using config: /mysoft/zookeeper/bin/../conf/zoo.cfg

Stopping zookeeper ... STOPPED

2.1.2 Zookeeper全分佈式

1.安裝步驟

Zookeeper全分佈式,又稱Zookeeper集羣模式,安裝步驟如下。

(1)修改Zookeeper的配置文件zoo.cfg。

[root@qf01 conf]# vi /mysoft/zookeeper/conf/zoo.cfg

①將dataDir=/tmp/zookeeper修改爲如下內容。

dataDir=/mysoft/zookeeper/zkdata

②在文件末尾添加如下3行。

server.1=qf01:2888:3888

server.2=qf02:2888:3888

server.3=qf03:2888:3888

其中,1、2、3被稱爲myid,要求是在1~255之間的整數。qf01、qf02、qf03是指其對應的主機地址。

2888是leader端口,負責和follower進行通信。3888是follower端口,負責與其他節點推選leader。

(2)新建目錄/mysoft/zookeeper/zkdata,在該目錄下新建文件myid。

[root@qf01 conf]# mkdir /mysoft/zookeeper/zkdata

[root@qf01 conf]# vi /mysoft/zookeeper/zkdata/myid

在myid文件中填寫如下內容。

1

(3)將/soft/zookeeper/分發到虛擬機qf02、qf03。

[root@qf01 conf]# xsync.sh /mysoft/zookeeper/

(4)修改虛擬機qf02的/mysoft/zookeeper/zkdata/myid文件。

[root@qf02 ~]# vi /mysoft/zookeeper/zkdata/myid

將myid文件中的內容替換爲如下內容。

2

(5)修改虛擬機qf03的/mysoft/zookeeper/zkdata/myid文件。

[root@qf03 ~]# vi /mysoft/zookeeper/zkdata/myid

將myid文件中的內容替換爲如下內容。

3

(6)將虛擬機qf01的系統環境變量分發到虛擬機qf02、qf03。

[root@qf01 conf]# xsync.sh /etc/profile

(7)分別使虛擬機qf02、qf03的環境變量生效。

[root@qf02 ~]# source /etc/profile

[root@qf03 ~]# source /etc/profile

(8)分別啓動虛擬機qf01、qf02、qf03的Zookeeper服務器。

[root@qf01 conf]# zkServer.sh start

[root@qf02 ~]# zkServer.sh start

[root@qf03 ~]# zkServer.sh start      

(9)分別查看各虛擬機的Zookeeper服務器啓動狀態。

①查看虛擬機qf01的Zookeeper服務器啓動狀態。

[root@qf01 conf]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /mysoft/zookeeper/bin/../conf/zoo.cfg

Mode: follower

②查看虛擬機qf02的Zookeeper服務器啓動狀態。

[root@qf02 ~]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /mysoft/zookeeper/bin/../conf/zoo.cfg

Mode: leader

③查看虛擬機qf02的Zookeeper服務器啓動狀態。

[root@qf03 ~]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /mysoft/zookeeper/bin/../conf/zoo.cfg

Mode: follower

查看啓動狀態返回的結果中,出現Mode: follower或Mode: leader,表明Zookeeper服務器啓動成功。

注意:本次啓動Zookeeper服務器,leader出現在虛擬機qf02上。由於Leader的選舉是隨機的,因此下次啓動Zookeeper服務器時,Leader可能會出現在其他虛擬機上。

2. 啓動和關閉Zookeeper集羣

啓動和關閉Zookeeper集羣需要在每臺虛擬機上啓動和關閉Zookeeper服務器。在實際工作中,使用的服務器可能會比較多,在每個服務器上都進行相同的操作,效率不高。爲了方便地啓動和關閉Zookeeper集羣,可以編寫啓動腳本xzk.sh,具體步驟如下。

(1)在虛擬機qf01的/usr/local/bin/目錄下,新建xzk.sh腳本文件,xzk.sh文件內容如下。

#!/bin/bash

cmd=$1

if [ $# -gt 1 ] ; then echo param must be 1 ; exit ; fi

for (( i=1 ; i<=3 ; i++ )) ; do

    tput setaf 5

    echo ============ qf0$i $@ ============

    tput setaf 9

    ssh qf0$i "source /etc/profile ; zkServer.sh $cmd"

done

(2)爲xzk.sh腳本擁有者添加執行權限。

[root@qf01 bin]# chmod u+x xzk.sh

(3)通過xzk.sh腳本的start和stop命令,在虛擬機qf01上同時啓動和關閉虛擬機qf01、qf02、qf03的Zookeeper服務器。

[root@qf01 bin]# xzk.sh start

[root@qf01 bin]# xzk.sh stop

至此,Zookeeper全分佈式安裝完成。

 

 

 

 

 

3.1 Hadoop的HA模式

3.1.1 HA模式簡介

Hadoop的HA模式是指在Hadoop全分佈式基礎上,利用Zookeeper等協調工具配置的高可用的Hadoop集羣模式。

Hadoop的HA模式搭建規劃,如表4.3所示。本書Hadoop的HA模式是通過Zookeeper來實現的,因此需要在Hadoop的配置文件裏對Zookeeper進行相關設置。

表4.3 Hadoop的HA模式搭建規劃

主機名

IP地址

相關進程

qf01

192.168.10.11

NameNode、DataNode、DFSZKFailoverController、QuorumPeerMain、JournalNode、ResourceManager、NodeManager

qf02

192.168.10.12

NameNode、DataNode、DFSZKFailoverController、QuorumPeerMain、JournalNode、NodeManager

qf03

192.168.10.13

DataNode、NodeManager、QuorumPeerMain、JournalNode

 

Hadoop的HA模式包括兩部分:HDFS的HA模式、Yarn的HA模式。

3.1.2 HDFS的HA模式

在HDFS的HA模式下,有兩個NameNode,一個NameNode處於活躍(Active)狀態,另一個NameNode處於備用(Standby)狀態。活躍的NameNode負責Hadoop集羣中的所有客戶端操作,而備用的NameNode只是充當從屬服務器,維持足夠的狀態以在必要時進行快速故障轉移。

Hadoop的HA模式出現的原因是Hadoop集羣存在“單點故障”問題。“單點故障”問題是指對於只有一個NameNode的Hadoop集羣,如果NameNode出現故障,會導致Hadoop集羣無法正常工作。HA模式下的Hadoop集羣解決了單點故障問題,基本原理是:當一臺NameNode出現故障時,HA模式下的Hadoop集羣通過Zookeeper等協調工具快速啓動備用的NameNode,確保Hadoop集羣的高可用性。

1. HDFS的HA模式搭建

由於HDFS的HA模式搭建步驟較多,建議在搭建之前先對虛擬機qf01、qf02、qf03拍攝快照。如果搭建過程中系統報錯,可以快速恢復到搭建以前的狀態。

本書HDFS的HA模式搭建是在之前的Hadoop集羣和Zookeeper集羣基礎上進行的,具體步驟如下。

(1)確保Hadoop集羣和Zookeeper集羣處於關閉狀態。

(2)修改虛擬機qf01的/usr/local/hadoop-2.7.3/etc/hadoop/core-site.xml文件。

[root@qf01 ~]# vi /usr/local/hadoop-2.7.3/etc/hadoop/core-site.xml

將core-site.xml文件中的內容替換爲如下內容。

<configuration>

    <!-- 指定文件系統的名稱-->

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://qianfeng</value>

    </property>

    <!-- 配置Hadoop運行產生的臨時數據存儲目錄 -->

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/tmp/hadoop-qf01</value>

    </property>

    <!-- 指定自動故障轉移的集羣 -->

    <property>

        <name>ha.zookeeper.quorum</name>

        <value>qf01:2181,qf02:2181,qf03:2181</value>

    </property>

    <!-- 配置操作HDFS的緩存大小 -->

    <property>

        <name>io.file.buffer.size</name>

        <value>4096</value>

    </property>

</configuration>

(3)修改虛擬機qf01的/usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml文件。

[root@qf01 ~]# vi /usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml

將hdfs-site.xml文件中的內容替換爲如下內容。

<configuration>

    <!-- 配置HDFS塊的副本數(全分佈模式默認副本數是3,最大副本數是512) -->

    <property>

        <name>dfs.replication</name>

        <value>3</value>

    </property>

    <!-- 設置HDFS塊的大小 -->

    <property>

        <name>dfs.blocksize</name>

        <value>134217728</value>

    </property>

    <!-- 配置HDFS元數據的存儲目錄 -->

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>/home/hadoopdata/dfs/name</value>

    </property>

    <!-- 配置HDFS真正的數據內容(數據塊)的存儲目錄 -->

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>/home/hadoopdata/dfs/data</value>

    </property>

   <!-- 開啓通過Web操作HDFS -->

    <property>

        <name>dfs.webhdfs.enabled</name>

        <value>true</value>

    </property>

    <!-- 關閉HDFS文件的權限檢查 -->

    <property>

        <name>dfs.permissions.enabled</name>

        <value>false</value>

    </property>

    <!-- 配置虛擬服務名-->

    <property>

        <name>dfs.nameservices</name>

        <value>qianfeng</value>

    </property>

    <!-- 爲虛擬服務指定兩個NameNode(目前每個虛擬服務最多可以配置兩個NameNode) -->

    <property>

        <name>dfs.ha.namenodes.qianfeng</name>

        <value>nn1,nn2</value>

    </property>

    <!--  配置NameNode(nn1)的RPC地址 -->

    <property>

        <name>dfs.namenode.rpc-address.qianfeng.nn1</name>

        <value>qf01:8020</value>

    </property>

    <!--  配置NameNode(nn2)的RPC地址 -->

    <property>

        <name>dfs.namenode.rpc-address.qianfeng.nn2</name>

        <value>qf02:8020</value>

    </property>

    <!-- 配置NameNode(nn1)的HTTP地址 -->

    <property>

        <name>dfs.namenode.http-address.qianfeng.nn1</name>

        <value>qf01:50070</value>

    </property>

    <!-- 配置NameNode(nn2)的HTTP地址 -->

    <property>

        <name>dfs.namenode.http-address.qianfeng.nn2</name>

        <value>qf02:50070</value>

    </property>

    <!-- 配置JournalNode通信地址 -->

    <property>

        <name>dfs.namenode.shared.edits.dir</name>

        <value>qjournal://qf01:8485;qf02:8485;qf03:8485/qianfeng</value>

    </property>

    <!-- 配置NameNode出現故障時,啓用備用NameNode的代理-->

    <property>

        <name>dfs.client.failover.proxy.provider.qianfeng</name>

        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

    </property>

    <!-- 配置自動故障轉移 -->

    <property>

        <name>dfs.ha.automatic-failover.enabled</name>

        <value>true</value>

    </property>

    <!-- 配置防止腦裂的手段,本書使用shell腳本(/bin/true) -->

    <property>

        <name>dfs.ha.fencing.methods</name>

        <value>shell(/bin/true)</value>

    </property>

</configuration>

腦裂(split-brain)是指在高可用(HA)系統中,當聯繫着的兩個節點斷開聯繫時,本來爲一個整體的系統,分裂爲兩個獨立節點,這時兩個節點開始爭搶共享資源,結果會導致系統混亂,數據損壞。

(4)將虛擬機qf01上的core-site.xml和hdfs-site.xml文件分發到虛擬機qf02、qf03。

[root@qf01 ~]# xsync.sh /usr/local/hadoop-2.7.3/etc/hadoop/core-site.xml

[root@qf01 ~]# xsync.sh /usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml

(5)在虛擬機qf02上新建SSH公私祕鑰對。

[root@qf02 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

(6)在虛擬機qf02上配置免密登陸虛擬機qf01、qf02、qf03。

[root@qf02 ~]# ssh-copy-id root@qf01

[root@qf02 ~]# ssh-copy-id root@qf02

[root@qf02 ~]# ssh-copy-id root@qf03

(7)將虛擬機qf01上HDFS元數據的存儲目錄(/home/hadoopdata/dfs/name)分發到虛擬機qf02的/home/hadoopdata/dfs/目錄下。

[root@qf01 ~]# rsync -lr /home/hadoopdata/dfs/name root@qf02:/home/hadoopdata/dfs/

2.啓動HDFS的HA模式

首次啓動HDFS的HA模式步驟較多,如果首次啓動成功,後續啓動操作相對簡單。

(1)首次啓動HDFS的HA模式,步驟如下。

①在虛擬機qf01上啓動Zookeeper集羣。

[root@qf01 ~]# xzk.sh start

②在虛擬機qf01上格式化Zookeeper。

[root@qf01 ~]# hdfs zkfc -formatZK

③分別在虛擬機qf01、qf02、qf03上啓動JournalNode進程。

[root@qf01 ~]# hadoop-daemon.sh start journalnode

[root@qf02 ~]# hadoop-daemon.sh start journalnode

[root@qf03 ~]# hadoop-daemon.sh start journalnode

④在虛擬機qf01上初始化共享編輯日誌。

[root@qf01 ~]# hdfs namenode -initializeSharedEdits

⑤在虛擬機qf01上啓動HDFS進程。

[root@qf01 ~]# start-dfs.sh

(2)後續啓動HDFS的HA模式,步驟如下。

①在虛擬機qf01上啓動Zookeeper集羣。

[root@qf01 ~]# xzk.sh start

②在虛擬機qf01上啓動HDFS進程。

[root@qf01 ~]# start-dfs.sh

3.驗證HDFS相關進程是否成功啓動

在虛擬機qf01上查看虛擬機qf01、qf02、qf03的HDFS相關進程。

[root@qf01 ~]# xcmd.sh jps

============ qf01 jps ============

7024 DFSZKFailoverController

6515 NameNode

6633 DataNode

7161 Jps

5210 QuorumPeerMain

5818 JournalNode

============ qf02 jps ============

3191 QuorumPeerMain

3736 JournalNode

4362 DataNode

4698 Jps

4573 DFSZKFailoverController

4271 NameNode

============ qf03 jps ============

3122 QuorumPeerMain

3924 JournalNode

4356 Jps

4153 DataNode

出現以上進程,表明HDFS相關進程成功啓動。

4.自動故障轉移

HDFS的HA模式主要用於實現服務器的自動故障轉移,保證HDFS的高可用性,而自動故障轉移的實現依賴於ZooKeeper實現的如下功能。

(1)故障檢測。在Hadoop集羣中,每個NameNode所在的服務器都在ZooKeeper中維護一個持久會話。如果當前活躍的NameNode服務器出現故障,該服務器在ZooKeeper中維持的會話中斷,並通知另一個NameNode觸發故障轉移。

(2)指定活躍的NameNode。如果當前活躍的NameNode服務器出現故障,則ZooKeeper指定備用的NameNode成爲活躍的節點。

以上兩個功能主要是通過QuorumPeerMain、JournalNode和DFSZKFailoverController(ZKFC)進程實現的。下面主要對JournalNode和DFSZKFailoverController進行講解。

(1)JournalNode。

JournalNode主要用於兩個NameNode實現數據同步,確保寫入。兩個NameNode爲了實現數據同步,需要通過一組JournalNode的獨立進程進行通信。當活躍的NameNode中的edits日誌有任何修改時,會將修改記錄持久地記錄到大多數的JournalNode中;備用的NameNode會監控並讀取JournalNode中的變更數據,確保與活躍的NameNode數據同步。

由於edits日誌的變更必須寫入大多數(一半以上)JournalNode,所以至少確保存在3個JournalNode進程,確保系統在單個主機出現故障時能夠正常運行。一般設置JournalNode的數量爲奇數。

對於HA模式下的Hadoop羣集而言,需要確保一次只有一個NameNode處於活躍狀態,否則數據可能丟失或集羣不能正常工作。爲了防止腦裂情景的出現,JournalNode只允許一個NameNode處於活躍狀態,並對其進行相關的寫操作。在故障轉移期間,將要變爲活躍狀態的NameNode會簡單地接管寫入JournalNode的角色,這有效地阻止了其他NameNode繼續處於活躍狀態,從而允許新的活躍安全地進行故障轉移。

(2)DFSZKFailoverController。

DFSZKFailoverController是一個ZooKeeper客戶端進程,主要負責監視NameNode的運行狀態,管理ZooKeeper會話,進行基於ZooKeeper的選舉。運行NameNode的每臺服務器同時運行DFSZKFailoverController進程。

5.驗證自動故障轉移

(1)查看NameNode nn1和nn2的狀態。

查看nn1和nn2的狀態有兩種方法。

①在虛擬機qf01上查看nn1和nn2的狀態,首次查看狀態,用時十幾秒,之後查看狀態只需幾秒鐘。

[root@qf01 ~]# hdfs haadmin -getServiceState nn1

active

[root@qf01 ~]# hdfs haadmin -getServiceState nn2

standby

當前nn1處於活躍狀態,nn2處於備用狀態。如果出現nn1處於備用狀態,nn2處於活躍狀態的情況,也是正確的,因爲HA模式下,HDFS在啓動時會隨機指定一個NameNode處於活躍狀態。

②訪問NameNode Web界面來查看nn1和nn2的狀態。

在windows的瀏覽器中,輸入網址http://192.168.11.11:50070,看到nn1處於活躍狀態,如圖4.2所示。

在windows的瀏覽器中,輸入網址http://192.168.11.12:50070,看到nn2處於備用狀態,如圖4.3所示。

 

圖4.2 查看nn1的狀態

 

圖4.3 查看nn2的狀態

(2)驗證。

通過一些操作可以使活躍的nn1出現故障,查看是否可以成功將nn2切換到活躍狀態。這些操作有:使用kill命令強制關閉NameNode進程來模擬JVM崩潰;通過關閉虛擬機或斷開網絡連接,可以模擬不同類型的停機故障等。

本書以使用kill命令強制關閉NameNode進程爲例,進行模擬操作,具體步驟如下。

①在虛擬機qf02上,查看NameNode的進程ID。

[root@qf01 ~]# jps

3447 NameNode

2408 QuorumPeerMain

3529 DataNode

17625 Jps

3660 JournalNode

3806 DFSZKFailoverController

②使用kill命令強制關閉NameNode進程,使nn1出現故障。

[root@qf01 ~]# kill -9 3447

③在虛擬機qf01上查看nn2的狀態。

[root@qf01 ~]# hdfs haadmin -getServiceState nn2

active

在幾秒內nn2由原來的備用狀態自動切換到活躍狀態,表明HDFS實現了自動故障轉移。至此,HDFS的HA模式搭建完畢。

如果nn2未切換到活躍狀態,則表明HDFS的HA模式搭建不成功,相關配置可能存在錯誤。

3.1.3 Yarn的HA模式

Yarn的HA模式架構圖,如圖4.4所示,具體搭建步驟如下。

 

http://www.aboutyun.com/data/attachment/forum/201409/11/173746va3yagg553jqx4v6.png

圖4.4 Yarn的HA模式架構圖

在Yarn的HA模式下,有多個ResourceManager ,一個ResourceManager處於活躍(Active)狀態,一個或多個ResourceManager處於備用(Standby)狀態。活躍的ResourceManager負責將其狀態寫進Zookeeper,當該ResourceManager出現故障時,另一個備用的ResourceManager切換到活躍狀態,切換方式有兩種:管理員手動切換和配置自動故障轉移。本書以配置自動故障轉移爲例,進行Yarn的HA模式搭建。

1. Yarn的HA模式搭建

(1)確保Hadoop集羣和Zookeeper集羣處於關閉狀態。

(2)修改虛擬機qf01的/usr/local/hadoop-2.7.3/etc/hadoop/yarn-site.xml文件,將yarn-site.xml文件中的內容替換爲如下內容。

<configuration>

    <!-- 配置NodeManager啓動時加載Shuffle服務 -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <!-- 啓動yarn ResourceManager的HA模式 -->

    <property>  

        <name>yarn.resourcemanager.ha.enabled</name>  

        <value>true</value>

    </property>

    <!-- 配置yarn ResourceManager的集羣ID -->

    <property>  

        <name>yarn.resourcemanager.cluster-id</name>  

        <value>qianfeng</value>

    </property>

    <!-- 指定yarn ResourceManager實現HA的節點名稱 -->

    <property>  

        <name>yarn.resourcemanager.ha.rm-ids</name>  

        <value>rm1,rm2</value>

    </property>

    <!-- 配置啓動rm1的主機爲虛擬機qf01 -->

    <property>  

        <name>yarn.resourcemanager.hostname.rm1</name>  

        <value>qf01</value>

    </property>

    <!-- 配置啓動rm2的主機爲虛擬機qf02 -->  

    <property>  

        <name>yarn.resourcemanager.hostname.rm2</name>  

        <value>qf02</value>

    </property>

    <!-- 配置rm1的Web地址 -->

    <property>  

        <name>yarn.resourcemanager.webapp.address.rm1</name>  

        <value>qf01:8088</value>

    </property>

    <!-- 配置rm2的Web地址 -->

    <property>  

        <name>yarn.resourcemanager.webapp.address.rm2</name>  

        <value>qf02:8088</value>

    </property>

    <!-- 配置Zookeeper集羣地址 -->

    <property>  

        <name>yarn.resourcemanager.zk-address</name>  

        <value>qf01:2181,qf02:2181,qf03:2181</value>

    </property>

</configuration>

(3)將虛擬機qf01上的yarn -site.xml文件分發到虛擬機qf02、qf03。

[root@qf01 ~]# xsync.sh /usr/local/hadoop-2.7.3/etc/hadoop/yarn-site.xml

(4)在虛擬機qf01的/usr/local/hadoop-2.7.3/etc/hadoop/目錄下新建文件rm_hosts。

[root@qf01 ~]# vi /usr/local/hadoop-2.7.3/etc/hadoop/rm_hosts

在rm_hosts文件中輸入如下內容。

qf01

qf02

(5)將虛擬機qf01的/usr/local/hadoop-2.7.3/sbin/start-yarn.sh文件的倒數第5行替換爲如下內容。

"$bin"/yarn-daemons.sh --config $YARN_CONF_DIR --hosts rm_hosts  start resourcemanager

(6)將虛擬機qf01的/usr/local/hadoop-2.7.3/sbin/stop-yarn.sh文件的倒數第5行替換爲如下內容。

"$bin"/yarn-daemons.sh --config $YARN_CONF_DIR --hosts rm_hosts  stop resourcemanager

(7)將虛擬機qf01的rm_hosts、start-yarn.sh、stop-yarn.sh文件分發到虛擬機qf02、qf03。

[root@qf01 ~]# xsync.sh /usr/local/hadoop-2.7.3/etc/hadoop/rm_hosts

[root@qf01 ~]# xsync.sh /usr/local/hadoop-2.7.3/sbin/start-yarn.sh

[root@qf01 ~]# xsync.sh /usr/local/hadoop-2.7.3/sbin/stop-yarn.sh

2.啓動Yarn的HA模式

先啓動Zookeeper集羣,後啓動所有節點的Yarn進程。

[root@qf01 ~]# xzk.sh start

[root@qf01 ~]# start-yarn.sh

3.驗證Yarn相關進程是否成功啓動

在虛擬機qf01上查看虛擬機qf01、qf02、qf03的Yarn相關進程。

 [root@qf01 sbin]# xcmd.sh jps

============ qf01 jps ============

13588 ResourceManager

6037 QuorumPeerMain

13770 Jps

13707 NodeManager

============ qf02 jps ============

5904 QuorumPeerMain

11441 NodeManager

11359 ResourceManager

11551 Jps

============ qf03 jps ============

5717 QuorumPeerMain

10662 Jps

10604 NodeManager

出現以上進程,表明Yarn相關進程成功啓動。

4.驗證自動故障轉移

(1)查看rm1和rm2的狀態。

查看rm1和rm2的狀態有兩種方法。

①在虛擬機qf01上查看rm1和rm2的狀態,首次查看狀態,用時十幾秒,之後查看狀態只需幾秒鐘。

[root@qf01 ~]# yarn rmadmin -getServiceState rm1

standby

[root@qf01 ~]# yarn rmadmin -getServiceState rm2

active

當前rm1處於備用狀態,rm2處於活躍狀態。與HDFS的HA模式類似,可能出現rm1處於活躍狀態,rm2處於備用狀態的情況。

②訪問ResourceManager Web界面來查看rm1和rm2的狀態。

在windows的瀏覽器中,輸入網址http://192.168.11.11:8088,看到rm1處於備用狀態,如圖4.5所示。

在windows的瀏覽器中,輸入網址http://192.168.11.12:8088,看到rm2處於活躍狀態,如圖4.6所示。

 

圖4.5 查看rm1的狀態

 

圖4.6 查看rm2的狀態

(2)驗證。

使用kill命令強制關閉ResourceManager進程,模擬自動故障轉移,具體步驟如下。

①在虛擬機qf02上,查看ResourceManager的進程ID。

[root@qf02 ~]# jps

5904 QuorumPeerMain

11441 NodeManager

14174 Jps

11359 ResourceManager

②使用kill命令強制關閉ResourceManager進程,使rm2出現故障。

[root@qf02 ~]# kill -9 11359

③查看rm1的狀態。

[root@qf02 ~]# yarn rmadmin -getServiceState rm1

active

在幾秒內rm1由原來的備用狀態自動切換到活躍狀態,表明Yarn實現了自動故障轉移。至此,Yarn的HA模式搭建完畢。

3.1.4 啓動和關閉Hadoop的HA模式

(1)啓動Hadoop的HA模式。

在虛擬機qf01上,先啓動Zookeeper集羣,後啓動Hadoop集羣。

[root@qf01 ~]# xzk.sh start

[root@qf01 ~]# start-dfs.sh

[root@qf01 ~]# start-yarn.sh

(2)查看相關進程。

[root@qf01 sbin]# xcmd.sh jps

============ qf01 jps ============

17316 NameNode

6037 QuorumPeerMain

17670 DFSZKFailoverController

18134 Jps

17767 ResourceManager

17863 NodeManager

17532 JournalNode

17405 DataNode

============ qf02 jps ============

5904 QuorumPeerMain

15985 ResourceManager

15250 NameNode

15620 JournalNode

16116 NodeManager

16600 Jps

15372 DataNode

15823 DFSZKFailoverController

============ qf03 jps ============

13890 DataNode

14594 Jps

5717 QuorumPeerMain

14157 NodeManager

14014 JournalNode

(3)關閉Hadoop的HA模式。

在虛擬機qf01上,先關閉Hadoop集羣,後關閉Zookeeper集羣。

[root@qf01 ~]# stop-dfs.sh

[root@qf01 ~]# stop-yarn.sh

 [root@qf01 ~]# xzk.sh stop

4.1 Hive安裝

本書使用的是2.1.1版本的Hive,Hive的具體安裝步驟如下。

1.安裝Hive

(1)將Hive安裝包apache-hive-2.1.1-bin.tar.gz放到虛擬機qf01的/root/Downloads/目錄下,切換到root用戶,解壓Hive安裝包到/mysoft目錄(該目錄在安裝Zookeeper時已創建)下。

[root@qf01 ~]# tar -zxvf /root/Downloads/apache-hive-2.1.1-bin.tar.gz -C /mysoft/

(2)切換到/mysoft目錄下,將apache-hive-2.1.1-bin重命名爲hive。

[root@qf01 ~]# cd /mysoft/

[root@qf01 mysoft]# mv apache-hive-2.1.1-bin hive

(3)打開/etc/profile文件,配置Hive環境變量。

[root@qf01 mysoft]# vi /etc/profile

在文件末尾添加如下三行內容。

# Hive environment variables

export HIVE_HOME=/mysoft/hive

export PATH=$PATH:$HIVE_HOME/bin

(4)使環境變量生效。

[root@qf01 mysoft]# source /etc/profile

2.安裝MySQL

本書默認本書使用的是5.6版本的MySQL。

(1)將MySQL相關的兩個文件mysql-community-release-el7-5.noarch.rpm、mysql-connector-java-5.1.41.jar和mysql目錄(見附錄A)放到虛擬機qf01的/root/Downloads/目錄下。

(2)切換到/root/Downloads/目錄下,安裝mysql-community-release-el7-5.noarch.rpm文件。

[root@qf01 mysoft]# cd /root/Downloads/

[root@qf01 Downloads]# rpm -ivh mysql-community-release-el7-5.noarch.rpm

(3)切換到mysql目錄,安裝MySQL。

[root@qf01 Downloads]# cd mysql

[root@qf01 mysql]# yum localinstall *

(4)啓動MySQL進程,將其設置爲開機啓動。

[root@qf01 mysql]# systemctl start mysqld

[root@qf01 mysql]# systemctl enable mysqld

(5)查看MySQL進程是否啓動成功,如果出現“Active: active (running)”,表明MySQL進程啓動成功。

[root@qf01 mysql]# systemctl status mysqld

● mysqld.service - MySQL Community Server

   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)

   Active: active (running)

...

(6)進入MySQL。

[root@qf01 mysql]# mysql

(7)設置MySQL的root用戶的密碼爲root。

mysql> update mysql.user set password=password('root');

(8)更新權限。

mysql> flush privileges;

(9)退出MySQL。

mysql> exit

(10)配置密碼後,進入MySQL的命令如下。

[root@qf01 mysql]# mysql -uroot -p

Enter password:

...

mysql>

提示:出現Enter password後,輸入root。

至此,MySQL安裝完成。

3.配置Hive

通過配置Hive,將Hive的存儲Metastore數據的數據庫由Derby替換爲MySQL。

(1)切換到/mysoft/hive/conf目錄,修改如下兩個配置文件的名稱。

[root@qf01 mysql]# cd /mysoft/hive/conf

[root@qf01 conf]# mv hive-env.sh.template hive-env.sh

[root@qf01 conf]# mv hive-default.xml.template hive-site.xml

(2)修改hive-env.sh文件。將“# HADOOP_HOME=${bin}/../../hadoop”一行替換爲如下內容。

HADOOP_HOME=/usr/local/hadoop-2.7.3

(3)修改hive-site.xml文件。

①修改hive-site.xml文件中的MySQL數據庫信息:驅動、連接、賬號、密碼。查找以下4行內容:

<value>org.apache.derby.jdbc.EmbeddedDriver</value>

<value>jdbc:derby:;databaseName=metastore_db;create=true</value>

<value>APP</value>

<value>mine</value>

依次替換爲以下4行內容:

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

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

<value>root</value>

<value>root</value>

       ②使用vi編輯器的替換字符串功能,將hive-site.xml文件中的${system:java.io.tmpdir}替換爲/root/hivetemp,${system:user.name}替換爲root。

:%s#${system:java.io.tmpdir}#/root/hivetemp#g

:%s#${system:user.name}#root#g

(4)將MySQL的驅動文件mysql-connector-java-5.1.41.jar複製到/mysoft/hive/lib目錄下。

[root@qf01 conf]# cp /root/Downloads/mysql-connector-java-5.1.41.jar /mysoft/hive/lib

(5)初始化Metastore。

[root@qf01 conf]# schematool -initSchema -dbType mysql

4.啓動Hive的Cli客戶端

(1)在啓動Hive的Cli客戶端之前,需要先啓動Hadoop的HA模式。

[root@qf01 conf]# xzk.sh start

[root@qf01 conf]# start-dfs.sh

[root@qf01 conf]# start-yarn.sh

[root@qf01 conf]# hive

...

hive>

(2)進行簡單的測試,驗證Hive是否安裝成功。

①查看數據庫。

hive> show databases;

OK

default

Time taken: 1.388 seconds, Fetched: 1 row(s)

②創建數據庫,並查看數據庫是否成功創建。                  

hive> create database if not exists qfdb01;  

hive> show databases;

OK

qfdb01

default

Time taken: 0.012 seconds, Fetched: 2 row(s)

如果兩個測試的返回結果如上所示,表明Hive安裝成功。

(3)退出Hive的Cli客戶端。

hive> exit;

5.啓動Hive的Beeline客戶端

(1)關閉Hadoop的HDFS和Yarn進程,Zookeeper的相關進程不用關閉。

[root@qf01 ~]# stop-dfs.sh

[root@qf01 ~]# stop-yarn.sh

(2)在虛擬機qf01上修改/usr/local/hadoop-2.7.3/etc/hadoop目錄下的core-site.xml文件。

[root@qf01 ~]# vi /usr/local/hadoop-2.7.3/etc/hadoop/core-site.xml

(3)在core-site.xml中的</configuration>一行之前,添加如下幾行內容。

    <property>

        <name>hadoop.proxyuser.root.hosts</name>    

        <value>*</value>

    </property>

    <property>    

        <name>hadoop.proxyuser.root.groups</name>    

        <value>*</value>

    </property>

(3)將core-site.xml文件分發到虛擬機qf02、qf03。

[root@qf01 ~]# xsync.sh /usr/local/hadoop-2.7.3/etc/hadoop/core-site.xml

(4)啓動Hadoop的HDFS和Yarn進程。

[root@qf01 ~]# start-dfs.sh

[root@qf01 ~]# start-yarn.sh

(5)在虛擬機qf01上啓動Hive的Hiveserver2服務。

[root@qf01 ~]# hiveserver2

...

SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

啓動Hive的Hiveserver2服務後,命令行處於塞住狀態,等待客戶端的接入。

(6)在虛擬機qf01上,重新打開一個終端(Terminal)窗口,啓動Hive的Beeline客戶端。

[root@qf01 ~]# beeline

...

beeline>

(7)Beeline使用JDBC驅動連接Hiveserver2服務。

Beelin 使用JDBC驅動連接hiveserver2服務的方法有以下兩種。

①方法一:分步驟連接。

beeline> !connect jdbc:hive2://localhost:10000

提示:出現Enter username for jdbc:hive2://localhost:10000:時,按下回車鍵;出現Enter password for jdbc:hive2://localhost:10000:時,按下回車鍵。

出現以下內容,表明成功連接hiveserver2服務。

0: jdbc:hive2://localhost:10000>

注意:Hiveserver2默認使用的端口號是10000。

②方法二:在CentOS的命令行輸入以下命令直接連接。

[root@qf01 ~]# beeline -u jdbc:hive2://localhost:10000 -n root

...

0: jdbc:hive2://localhost:10000>

本書爲了方便把表述,以下內容中使用jdbc:hive2://>代替0: jdbc:hive2://localhost:10000>。

5.1 HBase安裝

本書使用的是1.2.6版本的HBase。HBase的安裝模式有單機模式、僞分佈式、完全分佈式、HA模式。本書主要講述HBase的單機模式、HA模式的安裝步驟。

5.1.1 HBase單機模式

HBase單機模式的安裝步驟如下。

(1)將HBase安裝包hbase-1.2.6-bin.tar.gz放到虛擬機qf01的/root/Downloads/目錄下,切換到root用戶,解壓HBase安裝包到/mysoft目錄下。

[root@qf01 ~]# tar -zxvf /root/Downloads/hbase-1.2.6-bin.tar.gz -C /mysoft/

(2)切換到/mysoft目錄下,將hbase-1.2.6重命名爲hbase。

[root@qf01 ~]# cd /mysoft/

[root@qf01 mysoft]# mv hbase-1.2.6 hbase

(3)打開/etc/profile文件,配置HBase環境變量。

[root@qf01 mysoft]# vi /etc/profile

在文件末尾添加如下三行內容。

# HBase environment variables

export HBASE_HOME=/mysoft/hbase

export PATH=$PATH:$HBASE_HOME/bin

(4)使環境變量生效。

[root@qf01 mysoft]# source /etc/profile

(5)切換到/soft/hbase/conf目錄下,修改文件hbase-env.sh。

[root@qf01 mysoft]# cd /mysoft/hbase/conf

[root@qf01 conf]# vi hbase-env.sh

(6)將# export JAVA_HOME=/usr/java/jdk1.6.0/一行替換爲如下內容。

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

(7)修改hbase-site.xml文件,將<configuration>和</configuration>兩行替換爲如下內容。

<configuration>

    <!-- 指定HBase存放數據的目錄 -->

    <property>

        <name>hbase.rootdir</name>

        <value>file:///root/hbasedir/hbase</value>

    </property>

       <!-- 指定zookeeper集羣存放數據的目錄 -->

    <property>

        <name>hbase.zookeeper.property.dataDir</name>

        <value>/root/hbasedir/hbase/zkdir</value>

    </property>

</configuration>

(8)啓動HBase單機模式。

[root@qf01 conf]# start-hbase.sh

(9)使用jps命令查看HBase進程。

[root@qf01 conf]# jps

8260 Jps

8157 HMaster

HMaster進程就是HBase的主進程。HMaster進程啓動表明HBase單機模式啓動成功。

(10)查看HBase的Web界面(如圖7.2所示),在瀏覽器中輸入以下網址。

http://192.168.11.11:16010

 

圖7.2 HBase的Web界面

(11)關閉HBase。

[root@qf01 conf]# stop-hbase.sh

stopping hbase...................

關閉HBase時會出現自動打點,需要耐心等待。

5.1.2 HBase的HA模式

1. 安裝規劃

HBase的HA模式安裝規劃,如表7.1所示。

表7.1 HBase的HA模式安裝規劃

主機名

IP地址

相關進程

qf01

192.168.10.11

NameNode、DataNode、NodeManager、ResourceManager DFSZKFailoverController、QuorumPeerMain、JournalNode、HMaster、HRegionServer

qf02

192.168.10.12

NameNode、DataNode、NodeManager、ResourceManager DFSZKFailoverController、QuorumPeerMain、JournalNode、HMaster、HRegionServer

qf03

192.168.10.13

DataNode、NodeManager、QuorumPeerMain、JournalNode、HRegionServer

2. 安裝步驟

HBase的HA模式安裝步驟如下。

(1)在虛擬機qf01上修改/mysoft/hbase/conf/hbase-site.xml文件,將<configuration>至</configuration>的內容替換爲以下內容。

<configuration>

    <!-- 開啓HBase的完全分佈式 -->

    <property>

        <name>hbase.cluster.distributed</name>

        <value>true</value>

    <!-- 指定Zookeeper集羣存放數據的目錄 -->

    <property>

        <name>hbase.zookeeper.property.dataDir</name>

        <value>/home/hadoopdata/hbase/zkdir</value>

    </property>

    <!-- 指定HBase需要連接的zookeeper集羣 -->

    <property>

        <name>hbase.zookeeper.quorum</name>

        <value>qf01,qf02,qf03</value>

    </property>

</configuration>

(2)修改/mysoft/hbase/conf/hbase-env.sh文件。

① 將# export HBASE_MANAGES_ZK=true一行替換爲如下內容,目的是設置HBase不使用內置的Zookeeper,而使用外部安裝的Zookeeper集羣。

export HBASE_MANAGES_ZK=false

② 將如下內容刪除,或者在兩個export前各添加一個#(即改爲註釋)。

export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

(3)修改/mysoft/hbase/conf/regionservers文件,將文件中的內容替換爲如下內容。

qf01

qf02

qf03

(4)在/mysoft/hbase/conf目錄下新建文件backup-masters,用於備份HBbase的主節點qf01,當主節點崩潰後,HBbase自動啓用備份節點。

[root@qf01 conf]# vi backup-masters

在backup-masters中添加如下內容。

qf02

(5)將Hadoop的配置文件目錄(/usr/local/hadoop-2.7.3/etc/hadoop)下的core-site.xml和hdfs-site.xml複製到/mysoft/hbase/conf目錄下。

[root@qf01 conf]# cd /usr/local/hadoop-2.7.3/etc/hadoop/

[root@qf01 hadoop]# cp core-site.xml hdfs-site.xml /mysoft/hbase/conf

(6)將HBase的安裝目錄複製到虛擬機qf02和qf03。

[root@qf01 hadoop]# xsync.sh /mysoft/hbase

(7)啓動HBase的HA模式,需要先啓動Zookeeper和Hadoop集羣。

[root@qf01 ~]# xzk.sh start

[root@qf01 ~]# start-dfs.sh

[root@qf01 ~]# start-yarn.sh

[root@qf01 ~]# start-hbase.sh

starting master, logging to /mysoft/hbase/logs/hbase-root-master-qf01.out

qf03: starting regionserver, logging to /mysoft/hbase/bin/../logs/hbase-root-regionserver-qf03.out

qf02: starting regionserver, logging to /mysoft/hbase/bin/../logs/hbase-root-regionserver-qf02.out

qf01: starting regionserver, logging to /mysoft/hbase/bin/../logs/hbase-root-regionserver-qf01.out

qf02: starting master, logging to /mysoft/hbase/bin/../logs/hbase-root-master-qf02.out

(8)使用jps命令查看進程。

[root@qf01 conf]# xcmd.sh jps

============ qf01 jps ============

5570 ResourceManager

2339 QuorumPeerMain

4887 NameNode

6183 HMaster

5224 JournalNode

5417 DFSZKFailoverController

5705 NodeManager

6329 HRegionServer

5004 DataNode

6623 Jps

============ qf02 jps ============

3984 DFSZKFailoverController

4082 ResourceManager

4709 Jps

4167 NodeManager

3658 NameNode

3851 JournalNode

3741 DataNode

4382 HRegionServer

4462 HMaster

2367 QuorumPeerMain

============ qf03 jps ============

3664 NodeManager

3425 DataNode

4034 Jps

3860 HRegionServer

2541 QuorumPeerMain

3535 JournalNode

出現以上進程表明HBase的HA模式啓動成功。

3.啓動和關閉HBase進程

啓動和關閉HBase進程的常用命令及含義,如表3.3所示。

表3.3 啓動和關閉Hadoop進程的常用命令及含義

命 令

含 義

start-hbase.sh

啓動HBase的所有HMaster、HRegionserver、備份的HMaster進程

stop-hbase.sh

關閉HBase的所有HMaster、HRegionserver、備份的HMaster進程

hbase-daemon.sh start master

單獨啓動HMaster進程

hbase-daemon.sh stop master

單獨關閉HMaster進程

hbase-daemons.sh start regionserver

啓動所有的HRegionserver進程

hbase-daemons.sh stop regionserver

關閉所有的HRegionserver進程

hbase-daemons.sh start master-backup

啓動所有備份的HMaster進程

hbase-daemons.sh stop master-backup

關閉所有備份的HMaster進程

6.1 Flume安裝

本書使用的是1.8.0版本的Flume。Flume的安裝步驟如下。

(1)將Flume安裝包apache-flume-1.8.0-bin.tar.gz放到虛擬機qf01的/root/Downloads/目錄下,切換到root用戶,解壓Flume安裝包到/mysoft目錄下。

[root@qf01 ~]# tar -zxvf /root/Downloads/apache-flume-1.8.0-bin.tar.gz -C /mysoft/

(2)切換到/mysoft目錄下,將apache-flume-1.8.0-bin重命名爲flume。

[root@qf01 ~]# cd /mysoft/

[root@qf01 mysoft]# mv apache-flume-1.8.0-bin flume

(3)打開/etc/profile文件,配置Flume環境變量。

[root@qf01 mysoft]# vi /etc/profile

在文件末尾添加如下三行內容。

# Flume environment variables

export FLUME_HOME=/mysoft/flume

export PATH=$PATH:$FLUME_HOME/bin

(4)使環境變量生效。

[root@qf01 mysoft]# source /etc/profile

(5)修改Flume的配置文件。

① 切換到/mysoft/flume/conf目錄下。

[root@qf01 mysoft]# cd /mysoft/flume/conf

② 將flume-env.ps1.template重命名爲flume-env.ps1。

[root@qf01 conf]# mv flume-env.ps1.template flume-env.ps1

③ 將flume-env.sh.template重命名爲flume-env.sh。

[root@qf01 conf]# mv flume-env.sh.template flume-env.sh

④ 修改flume-env.sh,將# export JAVA_HOME=/usr/lib/jvm/java-8-oracle一行替換爲如下內容。

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

(6)查看Flume的版本信息。

[root@qf01 conf]# flume-ng version

Flume 1.8.0

Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git

Revision: 99f591994468633fc6f8701c5fc53e0214b6da4f

Compiled by denes on Fri Sep 15 14:58:00 CEST 2017

From source with checksum fbb44c8c8fb63a49be0a59e27316833d

至此,Flume安裝完成。

7.1 Sqoop安裝

Sqoop的版本爲1.4.7。注意:Sqoop的1.4.7版本底層適配的是Hadoop2.6.0版本,本書使用的是Hadoop2.7.3版本。雖然使用的Hadoop版本不同,但是Hadoop的2.7.3版本兼容2.6.0版本。Sqoop的安裝步驟如下。

(1)啓動Zookeeper集羣、Hadoop集羣、MySQL。

[root@qf01 ~]# xzk.sh start

[root@qf01 ~]# start-dfs.sh

[root@qf01 ~]# start-yarn.sh

[root@qf01 ~]#  mysql -uroot -p

Enter password:

...

mysql>

提示:當本書中出現Enter password:時輸入root,按下回車鍵。

(2)將Sqoop安裝包sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz放到虛擬機qf01的/root/Downloads/目錄下。在虛擬機qf01上,重新打開一個終端,解壓Sqoop安裝包到/mysoft目錄下。

[root@qf01 ~]# tar -zxvf /root/Downloads/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /mysoft/

(3)切換到/mysoft目錄下,將sqoop-1.4.7.bin__hadoop-2.6.0重命名爲sqoop。

[root@qf01 ~]# cd /mysoft/

[root@qf01 mysoft]# mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop

(4)打開/etc/profile文件,配置Sqoop環境變量。

[root@qf01 mysoft]# vi /etc/profile

在文件末尾添加如下三行內容。

# Sqoop environment variables

export SQOOP_HOME=/mysoft/sqoop

export PATH=$PATH:$SQOOP_HOME/bin

(5)使環境變量生效。

[root@qf01 mysoft]# source /etc/profile

(6)將/root/Downloads目錄下的MySQL的驅動文件mysql-connector-java-5.1.41.jar,複製到虛擬機qf01的/mysoft/sqoop/lib目錄下。

[root@qf01 mysoft]# cp /root/Downloads/mysql-connector-java-5.1.41.jar /mysoft/sqoop/lib

(7)修改Sqoop的配置文件,具體做法如下。

① 切換到/mysoft/sqoop/conf目錄下,將文件sqoop-env-template.sh重命名爲sqoop-env.sh。

[root@qf01 mysoft]# cd /mysoft/sqoop/conf

[root@qf01 conf]# mv sqoop-env-template.sh  sqoop-env.sh

② 修改sqoop-env.sh文件。

[root@qf01 conf]# vi sqoop-env.sh

將sqoop-env.sh文件的如下幾行內容

#export HADOOP_COMMON_HOME=

#export HADOOP_MAPRED_HOME=

#export HBASE_HOME=

#export HIVE_HOME=

#export ZOOCFGDIR=

分別替換爲

export HADOOP_COMMON_HOME=/usr/local/hadoop-2.7.3

export HADOOP_MAPRED_HOME=/usr/local/hadoop-2.7.3

export HBASE_HOME=/mysoft/hbase

export HIVE_HOME=/mysoft/hive

export ZOOCFGDIR=/mysoft/zookeeper/conf

(8)查看當前Sqoop的版本信息。

[root@qf01 conf]# sqoop version

Warning: /mysoft/sqoop/../hcatalog does not exist! HCatalog jobs will fail.

Please set $HCAT_HOME to the root of your HCatalog installation.

Warning: /mysoft/sqoop/../accumulo does not exist! Accumulo imports will fail.

Please set $ACCUMULO_HOME to the root of your Accumulo installation.

18/10/26 13:45:04 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7

Sqoop 1.4.7

git commit id 2328971411f57f0cb683dfb79d19d4d19d185dd8

Compiled by maugli on Thu Dec 21 15:59:58 STD 2017

出現Sqoop 1.4.7一行,表明Sqoop安裝成功。

(9)去除警告信息。

因爲沒有設置HCAT_HOME(HCatalog的家目錄)、ACCUMULO_HOME,所以出現了相關的警告信息。本書對於HCatalog和Accumulo不作介紹,感興趣的讀者可以自行查找相關信息,因此進行如下操作去除警告信息。

① 修改/mysoft/sqoop/bin目錄下的configure-sqoop文件。

[root@qf01 conf]# cd /mysoft/sqoop/bin

[root@qf01 bin]# vi configure-sqoop

使用#註釋掉HCAT_HOME和ACCUMULO_HOME的相關信息,具體如下所示。

#if [ ! -d "${HCAT_HOME}" ]; then

#  echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."

#  echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'

#fi

#

#if [ ! -d "${ACCUMULO_HOME}" ]; then

#  echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."

#  echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'

#fi

② 查看Sqoop的版本信息,警告信息已去除。

[root@qf01 bin]# sqoop version

18/10/26 13:50:20 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7

Sqoop 1.4.7

git commit id 2328971411f57f0cb683dfb79d19d4d19d185dd8

Compiled by maugli on Thu Dec 21 15:59:58 STD 2017

至此,Sqoop安裝完成。

想進一步瞭解大數據技術,盡情來撩。V信:壹壹伍貳七一八壹叄叄(改爲數字添加好友即可)。

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