centos7搭建hadoop完全分散式叢集
搭建步驟
1.安裝centos7,並進行準備工作(可以安裝一個之後然後克隆)
2.修改各個centos7的hostname和hosts
3.建立使用者和使用者組
4.配置centos7網路,是centos7系統之間以及和hosts主機之間可以通過互相ping通
5.安裝jdk和配置環境變數,檢查是否配置成功
6.配置ssh,實現節點間的無密碼登入ssh node1/2指令驗證時候成功
7.master配置hadoop,並將hadoop檔案傳輸到node節點
8.配置環境變數,並啟動hadoop,檢查是否安裝成功,執行wordcount檢查是否成功
採用三臺機器
主機名 ip 對應的角色
namenode 188.2.72.57 namenode(主)
datanode1 188.2.72.58 datanode1(從1)
datanode2 188.2.72.59 datanode2(從2)
由於是現有三臺centos系統,所以省略安裝centos系統的步驟
1.修改主機名 (以namenode舉例)
hostnamectl set-hostname namenode(永久修改主機名)
reboot(重啟系統)
2.修改hosts(以namenode舉例)
188.2.72.60 namenode
188.2.72.59 datanode2
188.2.72.58 datanode1
3.嘗試看看能不能ping通(以namenode舉例)
ping -c 3 datanode1
4.準備安裝oracle的jdk,但安裝之前需要檢視有沒有安裝jdk
java-version
5.檢視有jdk,且是centos7系統自帶的openjdk,我們需要刪除掉安裝oracle的jdk
rpm -qa | grep java(查詢java版本)
rpm -e --nodeps xxx(逐個刪除完)
rpm -qa | grep java(沒有顯示任何)
那麼就刪除完了。我們可以安裝oracle的jdk了
6. 來到java目錄(注,我是已經提前建立了java目錄跟將tar.gz包複製到了java目錄中)
cd /usr/java
ls
7.解壓jdk
tar zxvf jdk-8u144-linux-x64.tar.gz
ls
8. Jdk的環境變數配置
方式一:
設定環境變數,執行vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:${JRE_HOME}/lib
方式二:
sudo vi ~/.bashrc
在開啟的檔案的末尾新增以下資訊:
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
9. 使用source命令來使剛才的jdk環境變數配置檔案生效
source ~/.bashrc
10. 在root使用者下給hadoop使用者增加sudo許可權
chmod u+w /etc/sudoers
vi /etc/sudoers
chmod u-w /etc/sudoers
11.ssh生成金鑰
ssh-keygen -t rsa(連續三次回車)
12. 切換到.ssh目錄下,進行檢視公鑰和私鑰
cd .ssh
ls
13.將id_rsa.pub複製到authorized_keys,並且給設定許可權
cp id_rsa.pub authorized_keys
然後將三個authorized_keys都下載到本地,對三個authorized_keys的內容都合併,意思就是說。三臺機器中的authorized_keys的內容都是相同的。
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
14.ssh 與別的節點無金鑰連線(每個節點都需要進行連線)
ssh datanode1(連線到datanode1)
hostname(檢視主機名,是否連線到)
exit(登出,不然會在連線到的機器上操作)
ssh datanode2(連線到datanode1)
hostname(檢視主機名,是否連線到)
exit(登出,不然會在連線到的機器上操作)
15.hadoop環境配置
16.首先,切換到/usr/java/ ,再切換到root使用者下,再 /root/java
cd /usr/java
su root
16.解壓hadoop (因為之前已經將hadoop的tar.gz安裝包移動過來,所以就略過移動那一步)
tar zxvf hadoop-2.7.4.tar.gz
17. 將檔名hadoop-2.7.4改為hadoop
mv hadoop-2.7.4 hadoop
ls
18. 將剛改名的hadoop檔案,許可權賦給hadoop使用者
chown -R hadoop:hadoop hadoop
ls -l(檢視許可權)
19. 建立目錄
mkdir /root/hadoop
mkdir /root/hadoop/tmp
mkdir /root/hadoop/var
mkdir /root/hadoop/dfs
mkdir /root/hadoop/dfs/name
mkdir /root/hadoop/dfs/data
20.修改配置檔案
cd /usr/java/hadoop/etc/hadoop
ls
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_144
21.修改slaves
vi slaves
將裡面的localhost刪除,增加:
datanode1
datanode2
22.修改core-site.xml檔案
vi core-site.xml
在<configuration>節點內加入配置:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.4/dfs/tmp</value>
</property>
</configuration>
23. 新建並且修改mapred-site.xml
在該版本中,有一個名為mapred-site.xml.template的檔案,
複製該檔案,然後改名為mapred-site.xml,命令是:
cp mapred-site.xml.template mapred-site.xml(複製檔案)
vi mapred-site.xml(修改配置檔案)
在<configuration>節點內加入配置:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>namenode:9010</value>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>namenode:50030</value>
</property>
<property>
<name>mapreduce.jobhisotry.address</name>
<value>namenode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>namenode:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/jobhistory/done</value>
</property>
<property>
<name>mapreduce.intermediate-done-dir</name>
<value>/jobhisotry/done_intermediate</value>
</property>
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
</configuration>
24. 修改vi hdfs-site.xml配置檔案,新增以下資訊
vi hdfs-site.xml
在<configuration>節點內加入配置:
<configuration>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>namenode:50090</value>
<description>The secondary namenode http server address and port.</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop-2.7.4/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop-2.7.4/dfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///home/hadoop/hadoop-2.7.4/dfs/namesecondary</value>
<description>Determines where on the local filesystem the DFSsecondary name node should store the temporary images to merge. If this is acomma-delimited list of directories then the image is replicated in all of thedirectories for redundancy.</description>
</property>
</configuration>
25. 修改yarn-site.xml配置檔案
vi yarn-site.xml
在<configuration>節點內加入配置:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>10</value>
</property>
</configuration>
26.hadoop需要配置的檔案
27.關閉防火牆
systemctl stop firewalld.service (關閉防火牆)
注:如果不關閉防火牆,可能導致無法使用叢集
28.初始化namenode,因為namenode是namenode,datanode1和datanode2都是datanode,所以只需要對namenode進行初始化操作,也就是對hdfs進行格式化。
bin/hadoop namenode -format(在usr/java/hadoop目錄下執行該命令)
29.啟動叢集
sbin/start-all.sh
30.檢視叢集是否啟動
jps
31.管理員身份執行記事本
32.開啟本地的host檔案
188.2.72.60 namenode
33.最後,現在是來驗證hadoop是否安裝成功。在Windows上可以通過 http://cnq:50070 訪問WebUI來檢視NameNode,叢集、檔案系統的狀態。這裡是HDFS的Web頁面
http://namenode:50070