環境搭建准備:(所有操作都是在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 下全部清空 並注意是所有節點的
如有問題,請指出
