1. 程式人生 > >Mac下CentOS虛擬機器裝Hadoop叢集、zookeeper叢集、HBase叢集

Mac下CentOS虛擬機器裝Hadoop叢集、zookeeper叢集、HBase叢集

開工前的資源準備

1、電腦安裝VMware Fusion,並安裝centos 7

2、下載需要的工具包

一、虛擬機器配置聯網

3臺虛擬機器都安裝完畢處於原始狀態,這個時候虛擬機器還是處於不可聯網的狀態,需要配置虛擬機器處於可以聯網,配置方式如下:

    設定 -> 網路介面卡 -> 與我的mac共享(NAT模式)


設定完之後,開啟mac的終端,輸入命令:

cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf

這個時候在終端視窗中會顯示出一大串。我們需要的是其中最前面的一塊:


在這邊,記住這個IP地址,因為後續配置虛擬機器上網都的時候會用到。

接著到Mac的系統偏好設定中,開啟網路,點選右下角的高階按鈕,在新出現的對話方塊中,選擇DNS,然後記下這個DNS地址。


接下來到虛擬機器中,輸入一下命令:

vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

開啟網絡卡配置,預設網絡卡配置如截圖顯示:


這個時候,我們應該改的東西有:

BOOTPROTO=static
ONBOOT=yes

在後面加上:

IPADDR=172.16.134.252
NETMASH=255.255.255.0
PREFIX=24
IPV6_PRIVACY=no
DNS1=172.16.52.184
GATEWAY=172.16.134.2

其中GATEWAY就是剛剛我們查詢到的IP,DNS1則是查詢到的DNS地址。


儲存完之後,輸入下列命令重啟網絡卡:

service network restart

重啟之後ping一下看是否能通:


這個時候網路已經能連線通了,在剩下的兩臺虛擬機器中也是做相同的配置。注意IP別搞混了。

二、新增配置使用者

用root使用者登入,然後建立一個登入名為hadoop的使用者,並修改對應的密碼:

useradd -m hadoop -s /bin/bash
passwd hadoop


完成之後。修改使用者的對應許可權:

visudo

開啟後直接輸入 :98 可以跳轉到對應的行數,在原有的root後面把hadoop使用者的許可權也加上:


儲存退出即可,這個時候就可以直接su hadoop切換到hadoop使用者了。(其他兩臺伺服器也是同樣的操作)

三、配置ssh免密登入

切換到hadoop使用者後,輸入下列命令生成公私鑰:

ssh-keygen -t rsa

這邊會詢問,直接三個回車就完成生成操作了。

這個時候在 ~/.ssh/目錄下就會生成對應的公私鑰:


這個時候就可以把這邊的公鑰傳到其他的機器上面,具體命令是:

ssh-copy-id h[email protected] #這邊輸入想要免密登入機器的IP地址


在提示是否輸入yes的時候輸入yes,接著提示輸入密碼的地方輸入對應機器hadoop使用者的密碼回車即可。

這個時候我們試試直接ssh連線到對應的機器:

ssh [email protected]

這個時候就已經可以免密登入到對應的機器了。(另外的機器一樣的配置)

四、配置Java環境

將一開始下載的包放在hadoop的使用者目錄下,然後進行解壓。

tar -xvf jdk-8u161-linux-x64.tar.gz

解壓完畢後用su切換到root把解壓出來的資料夾移動到/usr/local/java/目錄下:


這時候的jdk地址為:/usr/local/java/jdk1.8.0_161。然後配置Java的環境變數。

vim /etc/profile

開啟配置檔案後,在檔案最後加入如下配置:

export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

儲存退出並使用使用命令重新載入一次配置檔案:

source /etc/profile

這個時候就可以使用exit退出root使用者,切換會hadoop使用者後記得重新source一次,這個時候就可以使用java -version和echo $JAVA_HOME來檢視環境是否生效了:


接著修改 ~/.bashrc的配置檔案一樣加入Java的環境配置:

儲存後重新source一下這個配置檔案即可。

五、安裝Hadoop環境

上傳文章一開始下載的Hadoop檔案到使用者資料夾下並解壓檔案:

tar -xvf hadoop-2.7.4.tar.gz

解壓後為了方便把資料夾改名成hadoop,同剛剛安裝Java環境一樣把Hadoop的目錄用root許可權移動到/usr/local/下:


Hadoop解壓完成之後可以直接用Hadoop的bin目錄下的hadoop命令。

接下來為了方便使用,我們要配置Hadoop的環境變數,開啟 ~/.bashrc 然後在檔案最後輸入下面的配置:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

儲存退出後,重新source一下該配置檔案:


然後再隨意路徑下只用Hadoop命令測試一下:


成功。(另外兩臺虛擬機器也是一樣的操作)

六、Hadoop叢集配置

首先,切換到root使用者下把三臺配置完成的虛擬機器重新修改一下機器名稱:

vi /etc/hostname

其中一臺機器改成Master,其他的機器可以改成Slave1、Slave2、Slave3... 等等用於區分機器。

接著修改對應的hosts配置檔案,用於做機器名稱和ip的對映關係:


這個時候Master機器必須可以免密登入所有的Slave機器、並且要關掉所有虛擬機器的防火牆。CentOs 7的防火牆關閉方式如下:

systemctl stop firewalld.service  #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
firewall-cmd --state #檢視預設防火牆狀態

提示 not running則表示防火牆已經關閉。

然後把操作介面轉到作為Master的機器上,把路徑切換到 /usr/local/hadoop/etc/hadoop 我們要修改下面的幾個檔案

1、修改slaves,刪除原有內容,把配置的節點名稱加入到檔案中:


有幾個加幾個,兩個就只寫Slave1、Slave2,N個就一直寫到SlaveN。

2、修改core-site.xml檔案。加入如下配置:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

3、修改hdfs-site.xml檔案,加入如下配置:

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>
dfs.replication配置的值,有2個就寫2個,3個就寫3個。

4、修改mapred-site.xml檔案,得先複製一下mapred-site.xml.template,然後改個名稱,配置如下:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>

5、修改yarn-site.xml,配置如下:

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

這些檔案修改完之後。把改目錄複製到各個節點中。覆蓋原有的配置檔案。

scp -r ./hadoop [email protected]:/usr/local/hadoop/etc/


在Master節點上執行以下命令:

hdfs namenode -format #首次執行的時候才需要

在Slave節點執行以下命令:

hdfs datanode -format #首次執行的時候才需要

最後啟動在Master端進入到/usr/local/hadoop/sbin模流下啟動Hadoop環境:

./start-all.sh

看到這個介面就表示啟動完畢。

在瀏覽器中訪問管理器,地址有如下兩個:

http://172.16.134.251:50070/
http://172.16.134.251:8088/




圖中會顯示目前處於活動狀態的節點。

七、zookeeper叢集

把文章一開始下載的zookeeper-3.4.9.tar.gz上傳到各伺服器中,然後解壓。

tar -xvf zookeeper-3.4.9.tar.gz 

解壓完成之後的資料夾用root許可權移動至/usr/local/目錄下


完成之後。進入到zookeeper目錄下的conf資料夾中,這時候我們要複製一份zoo_sample.cfg檔案並改名成zoo.cfg,然後在該檔案中修改配置:

cp zoo_sample.cfg zoo.cfg

接下來用vi命令開啟zoo.cfg檔案,然後用 :12 切換到第十二行,把這邊的引數改成如下兩項:

dataDir=/usr/local/zookeeper-3.4.9/data
dataLogDir=/usr/local/zookeeper-3.4.9/logs

接著在檔案的最後位置。加入叢集裡伺服器的地址資訊:

server.1=Master:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888
server.4=Slave3:2888:3888

儲存退出即可,在叢集環境中,所有的zookeeper的zoo.cfg均得是同一套配置。

配置完成之後,我們在zookeeper的目錄下,新建兩個資料夾data、logs。新建完成之後進入到data資料夾中。使用vi命令建立一個myid的檔案。並在裡面賦值對應的id。 比如上面配置Slave3是第4節點,則在檔案中寫入4即可。


接下來進入到zookeeper的bin目錄下。然後使用下列命令啟動zookeeper:

./zkServer.sh start

把其他節點上的zookeeper也全部啟動起來後檢查一下狀態是否正常。

./zkServer.sh status


會出現兩種角色,leader和follower。然後就算啟動完成了。嘗試的連線一下zookeeper叢集:

./zkCli.sh -server Master:2181,Slave1:2181,Slave2:2181,Slave3:2181

發現已經成功了。zookeeper配置就到這了。

八、HBase叢集安裝

老樣子,把文章一開始的HBASE下載下來後,傳到伺服器中進行解壓操作:

tar -xvf hbase-1.2.6-bin.tar.gz

接著跟著上面的方式,同樣的把hbase的資料夾移動到/usr/local/目錄下:


接著切換到root許可權下配置環境變數:

vi /etc/profile

在檔案的最後加入下面的配置後儲存退出:

export HBASE_HOME=/usr/local/hbase-1.2.6
export PATH=$HBASE_HOME/bin:$PATH

退出root許可權。然後source下修改後的檔案即可。接著切換到/usr/local/hbase-1.2.6/conf的路徑下。然後用vi命令開啟hbase-env.sh檔案,接著使用:27切換到第27行:


把這邊的註釋去掉,並且後面的值改成jdk所在的目錄:


然後使用:128切換到第128行,將下列配置項改成false,不用hbase自帶的zookeeper:


開啟hbase-site.xml,加入如下的配置:

<configuration>
  <property>        
    <name>hbase.rootdir</name>
    <!-- hbase存放資料目錄 -->         
    <value>hdfs://Master:9000/opt/hbase/hbase_db</value>           
    <!-- 埠要和Hadoop的fs.defaultFS埠一致-->       
  </property>       
  <property>        
    <name>hbase.cluster.distributed</name>
    <!-- 是否分散式部署 -->         
    <value>true</value>       
  </property>       
  <property>        
    <name>hbase.zookeeper.quorum</name>
    <!-- 指定HRegionServer節點 -->         
    <value>Master,Slave1,Slave2,Slave3</value>       
  </property>            
  <property>
    <!--zookooper配置、日誌等的儲存位置 -->           
    <name>hbase.zookeeper.property.dataDir</name>           
    <value>/usr/local/zookeeper-3.4.9</value>        
  </property> 
</configuration>

修改regionservers檔案,加入配置檔案中寫的節點:


然後通過scp命令把配置檔案複製到各個節點中:

cd /usr/local/hbase-1.2.6
scp -r ./conf [email protected]:/usr/local/hbase-1.2.6/
scp -r ./conf [email protected]:/usr/local/hbase-1.2.6/
scp -r ./conf [email protected]:/usr/local/hbase-1.2.6/

後面就是。切換到hbase目錄下的bin目錄裡面,然後通過啟動檔案啟動hbase:

./start-hbase.sh

啟動完畢,使用jps命令查一下:


在Master節點中,HMaster是Hbase的程序,在Slave節點中HRegionServer是Hbase的程序。表示啟動完成,然後訪問下,管理介面出來了:


完畢……