Hadoop 安裝

集群規(guī)劃

主機 IP 安裝軟件 運行進程
nimbus 192.168.116.129 hadoop,zookeeper,jdk NameNode、DFSZKFailoverController(zkfc)、ResourceManager、JournalNode、QuorumPeerMain、JobHistoryServer
supervisor1 192.168.116.130 hadoop,zookeeper,jdk NameNode、DataNode、DFSZKFailoverController(zkfc)、JournalNode、QuorumPeerMain
supervisor2 192.168.116.131 hadoop,zookeeper,jdk DataNode、NodeManager、JournalNode、QuorumPeerMain

前期準備

  • 靜態(tài)IP設置
    $ vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0                 //指出設備名稱
BOOTPROT=static             //啟動類型 dhcp|static
IPADDR=192.168.0.2          //IP地址
NETMASK=255.255.255.0       //子網(wǎng)掩碼
NETWORK=192.168.0.0         //網(wǎng)絡地址
GATEWAY=192.168.0.1         //網(wǎng)關地址
ONBOOT=yes                  //是否啟動應用
#TYPE=Ethernet               //網(wǎng)絡類型
#BROADCAST=192.168.1.203     //廣播地址
#HWADDR=00:06:5B:FE:DF:7C    //硬件Mac地址
  • 賬號分配
    需要使用具備 sudo 免密碼認證的非 root 用戶,文本中以 hddev 用戶執(zhí)行操作。
    登錄到集群內 每臺主機,執(zhí)行以下操作
  1. 使用 root 用戶登錄 Centos 命令行;
  2. 開放 sudoers 文件寫權限,執(zhí)行 chmod u+w /etc/sudoers;
  3. 執(zhí)行 vi /etc/sudoers,找到 root ALL=(ALL) ALL
    在其下邊添加一行數(shù)據(jù):hddev ALL=(ALL) NOPASSWD: ALL,hddev 為 sudo 免密碼用戶
  4. 執(zhí)行 Esc wq 保存推出 vi ;
  5. 恢復 sudoers 文件權限,執(zhí)行 chmod u-w /etc/sudoers
  6. 切換到新增 hddev,執(zhí)行 su – hddev ;
  7. 在 hddev 用戶下校驗 sudo 免密碼登錄配置是否正確: 執(zhí)行 sudo ls ,如果沒有提示需要輸入密碼,則說明配置正確。
  • SSH免密碼登錄
    主備NameNode,ResourceManager進程所在主機要進行對集群其它主機的免密碼登錄配置。
    具體步驟示例:
1.   通過 hddev 賬號登錄以后,在集群內所有主機上生成公鑰和私鑰 
mkdir ~/.ssh 
chmod 700 ~/.ssh 
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 
chmod 600 ~/.ssh/authorized_keys 
2.   將 NMBDP 的主機 host1 上的公鑰拷貝到其他目標主機 
scp ~/.ssh/id_dsa.pub hddev@xxx:/home/hddev/host1_id_dsa.pub 
xxx:為目標主機名,接著會提示輸入對端主機密碼登陸,因為還沒實現(xiàn)免密碼登陸,這一次需要手工輸入密碼。 
3.   在目標主機上將 host1 的公鑰加入到本機認證文件中 
cat ~/host1_id_dsa.pub >> ~/.ssh/authorized_keys 
chmod 600 ~/.ssh/authorized_keys 
4.   接下來就可以在 host1 中通過 ssh 無密碼登錄其他主機。 
RSA
ssh-keygen -t rsa
ssh-copy-id-i target_hostname
  • 主機名設置
    1. 編輯/etc/hosts 文件
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.116.129 nimbus
192.168.116.130 supervisor1
192.168.116.131 supervisor2
  1. 設置主機名
    命令行執(zhí)行 sudo hostname host1 編輯文件 sudo vi /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=host1
```
(重要)檢查主機名設置是否正確: $hostname -f 查看是否為預期輸出

  • **關閉防火墻、 SELinux 和 PackageKit **
sudo chkconfig iptables off 
sudo /etc/init.d/iptables stop
sudo setenforce 0  
sudo vi /etc/selinux/config,將其中的 SELINUX 值設置為 disabled 
如果安裝了 PackageKit , 需要編輯 /etc/yum/pluginconf.d/refresh-packagekit.conf,做如下修改 enabled=0 
  • **安裝 JDK **
  1. 下載 Oracle JDK 1.7.0_55 64-bit 安裝文件 jdk-7u55-linux-x64.gz ;
  2. 創(chuàng)建/usr/java 目錄,執(zhí)行:sudo mkdir /usr/java
  3. 并將 jdk-7u55-linux-x64.gz 文件拷貝到/usr/java 目錄;并執(zhí)行 cd /usr/java 進入該目錄;
  4. 將 jdk-7u55-linux-x64.gz 文件解壓到/usr/java 目錄,執(zhí)行:sudo tar -xvf jdk-7u55-linux-x64.gz ;
  5. 安裝成功后會生成 jdk1.7.0_55,確認該目錄權限為 drwxr-xr-x (755)
  6. 更改該目錄所屬用戶組:sudo chown -R root:root jdk1.7.0_55
  7. 執(zhí)行 sudo vi /etc/profile 編輯文件,增加如下內容:
export JAVA_HOME=/usr/java/jdk1.7.0_55 
export PATH=.:$JAVA_HOME/bin:$PATH 
  1. 執(zhí)行 source /etc/profile 使文件修改生效。

搭建zookeeper集群

待補充
bin/zkServer.sh start #啟動
bin/zkServer.sh status #查看狀態(tài)

搭建Hadoop HA集群

  1. 環(huán)境變量配置
$ vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_55
export PATH=.:$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/home/kimibob/app/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export ZOO_HOME=/home/kimibob/app/zookeeper-3.4.6/
export PATH=$ZOO_HOME/bin:$PATH
$ source /etc/profile
  1. 配置hadoop-env.sh 修改一處即可
    export JAVA_HOME=/usr/java/jdk1.7.0_55/
  2. core-site.xml 【注:以下配置項中的中文注釋不可出現(xiàn)在實際文件中,這里僅供說明用】
<configuration>
    <!-- 指定hdfs的nameservice為ns1 -->        
    <property>                
        <name>fs.defaultFS</name>                
        <value>hdfs://mycluster</value>        
    </property>        
    <!-- 指定hadoop臨時目錄 -->        
    <property>                
        <name>hadoop.tmp.dir</name>                
        <value>/home/kimibob/app/app_data/hadoop_tmp</value>        
    </property>        
    <!-- 指定zookeeper地址 -->        
    <property>                
        <name>ha.zookeeper.quorum</name>                
        <value>nimbus:2181,supervisor1:2181,supervisor2:2181</value>        
    </property>
</configuration>
  1. hdfs-site.xml【注:以下配置項中的中文注釋不可出現(xiàn)在實際文件中,這里僅供說明用】
<configuration>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    <!--指定hdfs的nameservice為mycluster,需要和core-site.xml中的保持一致 -->
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <!-- mycluster下面有兩個NameNode,分別是nn1,nn2 -->
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <!-- nn1的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>nimbus:8020</value>
    </property>
    <!-- nn1的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>nimbus:50070</value>
    </property>
    <!-- nn2的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>supervisor1:8020</value>
    </property>
    <!-- nn2的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>supervisor1:50070</value>
    </property>
    <!-- 指定NameNode的元數(shù)據(jù)在JournalNode上的存放位置 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://nimbus:8485;supervisor1:8485;supervisor2:8485/mycluster</value>
    </property>
    <!-- 指定JournalNode在本地磁盤存放數(shù)據(jù)的位置 -->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/kimibob/app/app_data/journal</value>
    </property>
    <!-- 開啟NameNode失敗自動切換 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <!-- 配置失敗自動切換實現(xiàn)方式 -->
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!-- 配置隔離機制 -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <!-- 使用隔離機制時需要ssh免登陸 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/kimibob/.ssh/id_rsa</value>
    </property>
</configuration>
  1. mapred-site.xml【注:以下配置項中的中文注釋不可出現(xiàn)在實際文件中,這里僅供說明用】
<configuration>
    <!-- 指定mr框架為yarn方式 -->        
    <property>                
        <name>mapreduce.framework.name</name>                
        <value>yarn</value>        
    </property>
  <!-- 指定jobhistory--> 
  <property>
        <name>mapreduce.jobhistory.address</name>
        <value>nimbus:10020</value>
  </property>
  <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>nimbus:19888</value>
  </property>
</configuration>
  1. yarn-site.xml【注:以下配置項中的中文注釋不可出現(xiàn)在實際文件中,這里僅供說明用】
<configuration>
    <!-- 指定resourcemanager地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>nimbus</value>
    </property>
    <!-- 指定nodemanager啟動時加載server的方式為shuffle server -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
  1. 配置datanode的配置文件slaves 【hadoop-daemons.sh腳本執(zhí)行的主機列表會從這個文件獲取】
[kimibob@nimbus  hadoop]$ vi slaves 
supervisor1
supervisor2
  1. 將hadoop目錄拷貝到集群其他主機
  2. 啟動各項服務【嚴格按照順序】
 1. nimbus、supervisor1、supervisor2三臺啟動zookeeper服務
     jps 對應進程:QuorumPeerMain
 2. nimbus、supervisor1、supervisor2三臺分別執(zhí)行:hadoop-daemon.sh start journalnode【注意只有第一次需要這么啟動,之后start-dfs.sh有包含journalnode的啟動】
     jps 對應進程:JournalNode
 3. 格式化主NameNode【這個過程僅僅在第一次使用之前執(zhí)行一次】:hdfs namenode –format
 4. 主NameNode上執(zhí)行:hdfs zkfc -formatZK
 5. 初始化備NameNode:hdfs namenode  -bootstrapStandby【其實就是把主NameNode的元數(shù)據(jù)目錄file://${hadoop.tmp.dir}/dfs/name拷貝一份到備NameNode主機同樣位置】
 6. 啟動hdfs:start-dfs.sh 【包括主備NameNode,三個journalnode,兩個ZK Failover Controllers 的啟動】
 7. 啟動YARN: start-yarn.sh
 8. 啟動MR-history-server:mr-jobhistory-daemon.sh start historyserver
各個主機進程:
[kimibob@nimbus ]$ jps -m
14915 NameNode
14744 JournalNode
14679 QuorumPeerMain /home/kimibob/app/zookeeper-3.4.6/bin/../conf/zoo.cfg
15265 DFSZKFailoverController
15482 ResourceManager
15809 JobHistoryServer
[kimibob@supervisor1 ]$ jps -m
13945 NameNode
13855 JournalNode
14032 DataNode
13782 QuorumPeerMain /home/kimibob/app/zookeeper-3.4.6/bin/../conf/zoo.cfg
14201 DFSZKFailoverController
14351 NodeManager
[kimibob@supervisor2 ]$ jps -m
11865 JournalNode
11955 DataNode
11799 QuorumPeerMain /home/kimibob/app/zookeeper-3.4.6/bin/../conf/zoo.cfg
12136 NodeManager
  1. 服務地址
    hdfs:(active) http://nimbus:50070/ (standby)http://supervisor1:50070/
    yarn:http://nimbus:8088/
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 安裝配置Hadoop環(huán)境之前,先要知道Hadoop有三種運行模式: 1. 單機模式(standalone) 單機模...
    我阿霆哥閱讀 1,879評論 0 1
  • 1.下載軟件 a. 下載VirtualBox http://download.virtualbox.org/vir...
    landy8530閱讀 3,751評論 3 11
  • 1.軟件及版本 a.VMware Workstation Pro b.CentOS-6.8-x86_64-mini...
    0_9f3a閱讀 911評論 0 3
  • 安裝條件: redhat centos7 java1.8 hadoop3.2.1 前言: 此次安裝重在配置! 各個...
    木木里_2047閱讀 629評論 0 0
  • 能預料到將要發(fā)生的事情嗎? 相信有心靈感應的存在嗎? 世事無常! 珍惜當下! 我們?yōu)榱四氂械呢澯?,覺得當下一切皆...
    懶得做飯閱讀 103評論 0 1

友情鏈接更多精彩內容