第1步:準備三臺虛擬機,一臺作爲master,兩臺作爲slave。
第2步:三臺虛 擬機必須能訪問外網,並且能相互ping通。
第3步:查看三臺主機的名字,爲後續使用ssh能互相連接。分別爲master,slave1,slave2
分別查看三臺虛擬機。
查看命令 hostname
修改命令vi etc/sysconfig/network
使用source etc/sysconfig/network刷新,若不行則reboot。
第4步: 安裝ssh服務,使三臺虛擬機不需要密碼就能相互訪問。安裝命令yum -y openssh-server 安裝服務,安裝客戶端 yum -y openssh-clients。
第5步: 如果能讓其他服務器訪問本服務器必須關閉防火牆 命令 service iptables stop,禁止防火牆開機啓動chkconfig iptables off,
第6步: 配置相關域名,通過域名,不需要通過ip地址就能訪問。命令 vi etc/hosts,IP地址分別爲三臺服務主機的地址。
192.168.174.101 master
192.168.174.102 slave1
192.168.174.103 slave2
第7步:執行ssh-keygen生成公鑰和祕鑰 使三臺服務通過公鑰和祕鑰來相互連接。
第8步:通過ssh-copy-id master或者IP地址 /root/.ssh/id_rsa.pub 把公鑰發給master
第9步:master使用命令cat /root/.ssh/authorized_keys查看收到的公鑰
第10步:master發送公鑰給slave1和slave2 命令 scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/
scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/
第11步: 分別執行ssh命令,查看是否能相互登錄。
ssh master exit
ssh slave1 exit
ssh slave2 exit
第12步:在master中建立一個文件夾/opt/SoftWare/ 命令mkdir /opt/SoftWare/
第13步:進入/opt/SoftWare/目錄中 並安裝 yum -y install lrzsz
lrzsz工具是可以上傳本地的文件
命令爲 yum -y install lrzsz
上傳命令 rz
也可以同個wget 路徑 下載
第14步:上傳jdk到/opt/SoftWare/中
命令rz
第15步:解壓jdk命令爲
tar -xvf jdk名稱
第16步:配置環境變量
命令 vi /etc/profile
添加一下內容
export JAVA_HOME=/opt/SoftWare/jdk1.8.0_151 #這是jdk的安裝路徑
export JRE_HOME=$JAVA_HOME/jre 如果失敗則 export JRE_HOME=/opt/SoftWare/jdk1.8.0_151/jre #java運行環境配置
export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #javac的編譯器的環境變量,系統自動去查找jar包
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin #當系統運行javac或者java等然後會從path路徑中查找。
第17步: 刷新環境變量 source /etc/profile 並查看是否配置成功 命令 java -version,或者javac,java
第18步: 下載hadoophttp://hadoop.apache.org/releases.html。
第19步: 進入/opt/SoftWare/目錄中 上傳hadoop到文件夾中
命令 :cd /opt/SoftWare/
命令:rz
第20步: 解壓hadoop
命令 tar -xvf hadoop壓縮包
第21步: 配置hadoop環境變量
命令 vi /etc/profile
添加內容
export HADOOP_HOME=/opt/SoftWare/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
第22步:刷新環境變量 source /etc/profile 並查看是否配置成功 命令 java -version,或者javac,java
第23步: 進入/opt/SoftWare/hadoop-2.7.3 中 創建 tmp,logs,hdfs/namenode,hdfs/datanode,hdfs
命令 mkdir tmp,mkdir logs, mkdir hdfs,mkdir hdfs/namenode, mkdir hdfs/datanode,
第24步: 進入/opt/SoftWare/hadoop-2.7.3/etc/hadoop中 這是hadoop中所有的配置文件
24.1 修改配置文件中hadoop-env.sh 修改環境變量
命令:vi hadoop-env.sh
修改第 25 行的 ${JAVA_HOME} 爲自己的 jdk 安裝目錄
(/opt/SoftWare/jdk1.8.0_151)
24.2 修改配置文件yarn-env.sh
修改第 23 行,解註釋(export JAVA_HOME=/home/y/libexec/jdk1.6.0/),修改路徑爲自己的 jdk 安裝目錄
(/opt/SoftWare/jdk1.8.0_151 )
24.3修改配置文件slaves
修改 localhost 爲 slave1 和 slave2 目的是爲slaves中有兩個slave1和slave2
24.4 將mapreduce-site.xml.template 從命名爲mapreduce-site.xml
命令爲mv mapred-site.xml.template mapred-site.xml 重命名 mapred-site.xml.template
24.5 修改hadoop核心配置文件core-site.xml
命令 vi etc/hadoop/core-site.xml
修改內容爲
<property>
<name>fs.defaultFS</name>
<!--定義HadoopMaster的URI和端口-->
<value>hdfs://master:9000</value>
<!-- fs.defaultFS- 這是一個描述集羣中NameNode結點的URI(包括協議、主機名稱、端口號),集羣裏面的每一臺機器都需要知道NameNode的地址。DataNode結點會先在NameNode上註冊,這樣它們的數據纔可以被使用。獨立的客戶端程序通過這個URI跟DataNode交互,以取得文件的塊列表。-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<!--hadoop 中的臨時存儲目錄,tmp 文件夾的路徑 --> <!—hadoop.tmp.dir 是hadoop文件系統依賴的基礎配置,很多路徑都依賴它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默認就放在這個路徑中-->
<value>file:/opt/SoftWare/hadoop-2.7.3/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<!--用作序列化文件處理時讀寫buffer的大小-->
<value>131702</value>
</property>
24.5 修改hadoop中分佈式文件系統配置文件hdfs-site.xml:
命令 vi etc/hadoop/hdfs-site.xml
<property>
<!-- namenode 節點數據存儲目錄 -->
<name>dfs.namenode.name.dir</name>
<value>file:/opt/SoftWare/hadoop-2.7.3/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!-- datanode 數據存儲目錄 -->
<value>file:/opt/SoftWare/hadoop-2.7.3/hdfs/datanode</value>
</property>
<property>
<!-- 指定DataNode存儲block的副本數量,不大於DataNode的個數就行 -->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<!-- 指定master的http地址 -->
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<!-- 指定master的https地址 -->
<name>dfs.namenode.secondary.https-address</name>
<value>master:50091</value>
</property>
<property>
<!-- 必須設置爲true,否則就不能通過web訪問hdfs上的文件信息 -->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
24.5 修改hadoop中集羣管理和調度配置文件yarn-site.xml
命令 vi etc/hadoop/yarn-site.xml
<property>
<!--NodeManager上運行的附屬服務。需配置成mapreduce_shuffle,纔可運行MapReduce程序-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<!--ResourceManager 對客戶端暴露的地址。客戶端通過該地址向RM提交應用程序,殺死應用程序等。-->
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<!--ResourceManager 對ApplicationMaster暴露的訪問地址。ApplicationMaster通過該地址向RM申請資源、釋放資源等。-->
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<!--ResourceManager 對NodeManager暴露的地址.。NodeManager通過該地址向RM彙報心跳,領取任務等。-->
<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總的可用物理內存。注意,該參數是不可修改的,一旦設置,整個運行過程中不 可動態修改。另外,該參數的默認值是8192MB,因此,這個值通過一 定要配置。不過,Apache已經正在嘗試將該參數做成可動態修改的。-->
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
24.5 修改hadoop中mapreduce配置文件/mapred-site.xml
命令 vi etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name> #運行在yarn框架上
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name> <!---- 指定mr框架jobhistory的內部通訊地址。目前還不知道是做什麼的 -->
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name> <!---- 指定mr框架web查看的地址 -->
<value>master:19888</value>
</property>
第25步:將/opt/SoftWare/中的文件複製一份到slave1和slave2
命令:scp -r /opt/SoftWare/ root@slave1:/opt/
scp -r /opt/SoftWare/ root@slave2:/opt/
第26步:把 /etc/profile 文件拷貝到 slave1 和 slave2 的 /etc 下
命令 scp /etc/profile/ root@slave1:/etc/
scp /etc/profile/ root@slave2:/etc/
第27步:在slave1和slave2中驗證文件是否存在和java程序是否能運行
第28步:鎖定時間同步
安裝時間同步軟件 ntpdate:yum -y install ntp ntpdate
和網絡時間進行同步:ntpdate cn.pool.ntp.org
把時間寫入硬件進行鎖定:hwclock --systohc
第29步:進入 hadoop-2.7.3/bin 目錄,使用 ./hdfs namenode -format 進行格式化(master操作)
命令:cd bin
./hdfs namenode -format
不允許多次格式化,會導致集羣無法啓動
如果出錯:
1. 修改配置文件
2. 刪除 三個 上的 hdfs/name 和 hdfs/data 文件夾
3. 把修改的內容發送到 slave1 和 salve2 下
時刻保持 3 個虛擬機的配置文件是一致的
4. 重新格式化
第30步:進入 hadoop-2.7.3/sbin 目錄,使用 ./start-dfs.sh 啓動 hdfs 服務
命令爲 cd sbin
./start-dfs.sh
第31步:(master,slave1,slave2)分別執行jps查看進程,登錄http://master(IP地址):50070查看活動節點
第32步:master進入 hadoop-2.7.3/sbin 目錄,使用 ./start-yarn.sh 啓動 yarn 服務
第33步:(master,slave1,slave2)分別執行jps查看進程,登錄http://master(IP地址):8088查看resourcemanage情況
第34步:27.進入 hadoop-2.7.3/sbin 目錄,使用 ./stop-dfs.sh 關閉 hdfs 服務
進入 hadoop-2.7.3/sbin 目錄,使用 ./stop-yarn.sh 關閉 yarn 服務
切記:關虛擬機前先關閉 hadoop 集羣,不然可能會導致集羣的崩潰
備註:可以使用./start-all.sh打開所有的服務也可以使用./來停止所有的服務