Hadoop 集群搭建及部分詳解


環境搭建准備:(所有操作都是在root下)

  主機兩台,我沒有采用虛擬機,建議使用最小化安裝

1.jdk(每個節點都要配置)

  去Java官網下后綴名為.tar.gz的包

  

  使用FTP工具,或者rz命令進行上傳

  我放在了/opt/Software/Java 下

  使用 tar -zxvf解壓 最小化安裝若沒提示找不到這個命令 百度安裝這個工具

  編輯/etc/profile (也可以不在root 下,我只是測試用,防止之后權限出現問題)

  在后邊加上

  

export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152
export JRE_HOME=/opt/SoftWare/Java/jdk1.8.0_152/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

 

  保存

  檢驗:輸入 source /etc/profile 

  回車后 輸入: java -version

  看是否打印Java版本信息,如果提示命令未找到,檢查以上步驟

2.Hadoop下載

  我分享的是2.7.5,別的版本可以去官網找

  鏈接:https://pan.baidu.com/s/1GEZIiNP1kJPjHVucSa8Oow  密碼:7k01  

  上傳到虛擬機 在Software 下 創建Hadoop目錄

  解壓

  

准備工作到此結束

集群搭建:

計划:

主機名                       ip                    進程

master              10.32.6.150           namenode resourcemanager

slave       10.32.6.227      datanode  secondarynamenode

首先添加hosts 識別

注釋掉開頭兩行 加上 #   后邊寫入 ip 和主機名

 

 

關閉防火牆

systemctl stop firewalld.service

關閉開機啟動

systemctl disable firewalld.service

 

免秘鑰

其實這里配置免秘鑰是為了namenode 和 resourcemanager  與各個節點通信,所以只需要  這兩個節點對自己和對其他節點的免秘鑰,但是如果不對每台機器都進行對自己以及對其他機器的公鑰分發,在從節點啟動或是終止集群就會提示輸入密碼,我這里是兩台機器看不出來區別,關於這點為什么更詳細的解答,可以谷歌或者查看Hadoop源代碼 

2.7.5源代碼 鏈接如下:鏈接:https://pan.baidu.com/s/1YWt2rcyiHncI5BMN0G7p7g  密碼:4p5z

 

 

在每台機器都輸入:

首先 cd ~/.ssh

ssh-keygen -t rsa -P '' 這點 就 ssh-keygen 也是可以的   關於ssh-keygen參考:http://killer-jok.iteye.com/blog/1853451

然后一路回車就行了

然后查看在.ssh文件夾下 是否有了這兩個文件

然后 在每台機器輸入

cp id_rsa.pub authorized_keys

最后將所有機器上的authorized_keys文件進行合並

在所有的從節點上都執行:cat ~/.ssh/authorized_keys | ssh root@master 'cat >> ~/.ssh/authorized_keys'

然后將master節點上的authorized_keys 分發到其他slave節點

scp ~/.ssh/authorized_keys root@slave1:~/.ssh/

然后測試 

 ssh slave1 

顯示這個則 完成,否則刪除.ssh下所有文件從 ssh-keygen開始

 

安裝Hadoop:(每個節點都要配置)

在/opt/Software/Hadoop下解壓

修改環境變量

加入

export HADOOP_HOME=/opt/SoftWare/Hadoop/hadoop-2.7.5
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存

重新加載  source /etc/profile

 

 

修改Hadoop配置文件:

配置 /etc/hadoop/hadoop-env.sh  

加入

export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

配置/etc/hadoop/yarn-env.sh

同樣加入

export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

修改slaves文件

把從節點名稱加進去

 

配置 core-site.xml

<!--在<configuration></configuration>中間添加一下內容-->
  <property>
    <name>fs.defaultFS</name><!--定義Hadoop Master的URI和端口-->
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name><!--hadoop的臨時存儲目錄-->
    <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.5/tmp</value>
  </property>
  <property>
    <name>io.file.buffer.size</name><!--用作序列化文件處理時讀寫buffer的大小-->
    <value>131702</value>
  </property>
  <property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
  </property>
  <property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
  </property>

配置hdfs-site.xml

  <property><!--namenode節點數據存儲目錄-->
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.5/hdfs/name</value>
  </property>
  <property><!--datanode數據存儲目錄-->
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.5/hdfs/data</value>
  </property>
  <property><!--指定DataNode存儲block的副本數量,不大於DataNode的個數就行,默認為3-->
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property><!--指定secondarynamenode的http協議訪問地址-->
    <name>dfs.namenode.secondary.http-address</name>
    <value>slave1:50090</value>
  </property>
  <property><!--指定master的https協議訪問地址-->
    <name>dfs.namenode.secondary.https-address</name>
    <value>10.32.6.150:50091</value>
  </property>
  <property><!--必須設置為true,否則就不能通過web訪問hdfs上的文件信息-->
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>

 

 

配置 yarn-site.xml

<!-- Site specific YARN configuration properties -->
  <property><!-- NodeManager上運行的附屬服務。需配置成mapreduce_shuffle才能運行MapReduce程序-->
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property><!-- 對客戶端暴露的地址。客戶端通過該地址想ResourceManager提交應用程序,或是殺死應用程序等-->
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
  </property>
  <property><!-- 對ApplicationMaster暴露的訪問地址,ApplicationMaster通過該地址向ResourceManager申請資源或是釋放資源 -->
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
  </property>
  <property><!-- ResourceManager對NodeManager暴露的地址,NodeManager通過該地址向ResourceManager匯報心跳,領取任務等-->
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
  </property>
  <property><!-- ResourceManager 對管理員暴露的訪問地址,管理員通過該地址向RM發送管理命令-->
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
  </property>
  <property><!-- 用戶可通過該地址在瀏覽器中查看集群各類信息 -->
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
  </property>
  <property><!-- NodeManager 總的可用的物理內存。注意,該參數是不可修改的,一旦設置,整個運行過程不可動態修改。不過Apache已經在嘗試將該參數做成可動態修改的-->
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
  </property>

 

 

修改  mapred-site.xml

這個文件是不存在的 可以用 cp mapred-site.xml.template mapred-site.xml  該命令創建一個

然后添加:

  <property><!--使用yarn運行mapreduce程序-->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property><!--MapReduce JobHistory Server地址-->
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
  </property>
  <property><!--MapReduce JobHistory Server Web界面地址-->
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
  </property>

 

到此 Hadoop配置文件全部結束,講master上的Hadoop文件夾發送到各個節點對應位置

 修改系統時間

 

 

 

格式化Hadoop 

 hdfs namenode -format

status 為0 表示成功 error 的話 上翻找錯誤

然后在 master  start-all.sh 啟動集群 

完成后在各個節點檢查

輸入 jps  

master :

 

 

slave1:

 

注:如果出現問題最好把 /hdfs/name    /hdfs/data   /tmp  /log 下全部清空 並注意是所有節點的

 

 

如有問題,請指出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM