1. 程式人生 > 實用技巧 >Hadoop基礎之環境搭建

Hadoop基礎之環境搭建

Hadoop基礎之環境搭建

環境搭建

  • 本地環境
    • 可以用於開發的單節點模式,沒有分散式的概念
  • 偽分散式環境
    • 一個節點表示一整個叢集,但是分散式的概念,一個節點充當分散式裡的所有角色
  • 完全分散式
    • 一個叢集中有N個節點,他們分別充當分散式中不同的角色,完成不同的任務

偽分散式環境搭建

#set hadoop enviornment
export HADOOP_HOME=/home/bduser/model/hadoop-2.7.6
PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
    • 修改配製檔案
      • hdfs-site.xml
<configuration>
    <property>
               <name>dfs.namenode.secondary.http-address</name>
               <value>hadoop100:9001</value>
    </property>
     <property>
            <name>dfs.replication</name>
            <
value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/home/bduser/model/hadoop-2.7.6/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name
> <value>/home/bduser/model/hadoop-2.7.6/dfs/data</value> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>/home/bduser/model/hadoop-2.7.6/dfs/secondaryName</value> </property> <property> <name>dfs.hosts</name> <value>/home/user/modules/hadoop/etc/hadoop/dfs</value> </property> <property> <name>dfs.hosts.exclude</name> <value>/home/user/modules/hadoop/etc/hadoop/dfs.hosts.exclude</value> </property> </configuration>
      • core-size.xml
<configuration>
      <property>
            <name>fs.default.name</name>
               <value>hdfs://hadoop100:9000</value>
      </property>

      <property>
            <name>net.topology.node.switch.mapping.impl</name>
            <value>hdfs.RackPerception</value>
      </property>
</configuration>
      • yarn-size.xml
<configuration>
      <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
      </property>

      <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop100</value>
      </property>
</configuration>
    • slaves
      • 填寫DataNode從節點
    • hadoop-env.sh
      • 修改JAVA_HOME路徑
      • 填寫DataNode節點
  • 格式化Hadoop
    • hadoop namenode format
  • 啟動
    • hadoop/sbin/start-all.sh
    • 需要什麼啟動什麼
  • 注意事項
    • 配置前
      • jdk
      • ssh免密登入
      • 防火牆關閉
    • 如果訪問不到webUI
      • 檢查防火牆
      • 檢查對映關係
      • 瀏覽器不能使用IE或相容模式
    • 需要格式化時
      • 關閉服務
      • 刪除創建出來的檔案
      • 重新格式化

完全分散式

  • 角色分配
    • 第一臺機器,NameNode,R esourcesManager
    • 中間機器,DataNode,NodeManager
    • 最後一臺機器,DataNode,SecondaryNameNode
  • 配製過程:虛擬機器為例
    • 克隆虛擬機器
    • 修改實體地址
      • sudo vim /etc/udev/rules.d/70-persistent-net.relus
      • 將原網絡卡註釋掉
      • 將新網絡卡改名為原網絡卡
      • 記錄網絡卡的實體地址
    • 修改IP地址
      • sudo vim /etc/sysconfig/network-scripts/ifcfg-etho
      • 修改網絡卡配製檔案中的實體地址,將記錄的實體地址寫入
      • 修改ip地址
      • 重啟網路:service network restart
    • 修改主機名
      • sudo vim /etc/sysconfig/network
      • HOSTNAME=新主機名
      • 重新啟動:reboot
    • 免密登入
      • 由於節點時完整複製的,包括ssh
      • 不需要重新配製
      • 如果是實體機,需要將不同的公鑰附加到authorized_keys
    • 修改Hadoop配製檔案
      • 修改配製檔案
      • 同步到所有節點
        • rsync -r 原路徑/原檔案 目標使用者名稱@目標地址:目標路徑
          • 核心命令:rsync,用法與scp一致
          • 區別:
            • scp全部複製
            • rsync只同步不一樣的
        • 可以使用指令碼來快速操作
      • 遠端操作所有節點
        • xcall
          • 核心命令:ssh 使用者 主機名/ip 命令
    • 格式化Hadoop叢集
      • 只在主節點格式化
      • hadoop/hdfs namenode -format
    • 啟動服務
  • 常見問題
    • 時間不同步導致服務啟動失效
      • 使用網路,連線國家受時中心進行自動同步
      • 使用date命令手動設定
    • 端口占用問題
      • 在啟動hadoop時,如果SecondaryNameNode沒有起來,很有可能是所需要的埠被佔用,檢查是什麼服務已經佔據了埠,進行修改
    • 多次格式化問題
      • 如果多次格式化會導致dfs的id資訊與叢集不同步
        • 刪除dfs目錄,重新格式化