一、搭建集羣
1、準備服務器(這裏以我的3臺Centos7爲例)
- 1個主節點:Carlota1(192.168.33.21),
- 2個子節點:Carlota2(192.168.33.22),Carlota3(192.168.33.23)
2、配置主節點名
在主節點命令行輸入: vi /etc/sysconfig/network 添加內容:
NETWORKING=yes
HOSTNAME=Carlota1
3、配置兩臺子節點名
分別在子節點命令行輸入: vi /etc/sysconfig/network 添加內容:
NETWORKING=yes
HOSTNAME=Carlota2
NETWORKING=yes
HOSTNAME=Carlota3
4、配置hosts
打開主節點的hosts文件,註釋掉 將文件的前兩行(當前主機的信息),並在文件中添加所有hadoop集羣的主機信息。
在命令行輸入: vi /etc/hosts ,添加3臺服務器的節點名信息:
192.168.33.21 Carlota1
192.168.33.22 Carlota2
192.168.33.23 Carlota3
保存之後,分別將主節點的hosts分別拷貝到其他兩個子節點:
- scp /etc/hosts [email protected]:/etc/
- scp /etc/hosts [email protected]:/etc/
分別執行 /bin/hostname hostsname 使更改生效,(例如:Carlota1上執行 /bin/hostsname Carlota1,使之生效。)(重啓可以代替/bin/hostname hostsname命令)
5、關閉防火牆
- 查看防火牆狀態 :firewall-cmd --state
- 停止firewall :systemctl stop firewalld.service
- 禁止firewall開機啓動:systemctl disable firewalld.service
6、配置ssh無密碼訪問(使每個節點上的/root/.ssh/authorized_keys文件中都包含所有的節點生成的公鑰內容)
- 生成公鑰密鑰對:在每個節點上分別執行命令行輸入:ssh-keygen -t rsa , 一直按回車或Yes直到生成結束(執行結束之後每個節點上的/root/.ssh/目錄下生成了兩個文件 id_rsa 和 id_rsa.pub其中前者爲私鑰,後者爲公鑰)
- 在主節點上執行命令行輸入:cp id_rsa.pub authorized_keys
- 將兩個子節點的公鑰拷貝到主節點上,分別在兩個子節點上執行:
scp /root/.ssh/id_rsa.pub root@Carlota1:/root/.ssh/id_rsa_Carlota2.pub
scp /root/.ssh/id_rsa.pub root@Carlota1:/root/.ssh/id_rsa_Carlota3.pub
- 在主節點上,將拷貝過來的兩個公鑰合併到authorized_keys文件中
cat id_rsa_Carlota2.pub>> authorized_keys
cat id_rsa_Carlota3.pub>> authorized_keys
- 將主節點的authorized_keys文件分別替換子節點的authorized_keys文件
scp authorized_keys root@Carlota2:/root/.ssh/
scp authorized_keys root@Carlota3:/root/.ssh/
- 最後測試是否配置成功:在Carlota1上分別執行,ssh Carlota2,ssh Carlota3 能正確跳轉到兩臺子節點的操作界面即可
二、Hadoop集羣配置
7、準備工作
下載好相應的Hadoop與JDK版本
8、分別上傳JDK與Hadoop的tar.gz文件到三臺服務器
這裏使用windows下的文件傳輸軟件進行上傳(其中我這裏上傳路徑分別爲/usr/local/java/和/usr/local/apps/)
9、安裝配置JAVA
- tar -zxvf jdk-8u251-linux-x64.tar.gz
- mv jdk-8u251-linux-x64.tar.gz jdk1.8
配置環境變量vi /etc/profile 添加以下內容
#JAVA
export JAVA_HOME=/usr/local/java/jdk1.8
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
- source /etc/profile
測試是否安裝成功:java -version
10、安裝hadoop
- tar -zxvf hadoop-3.2.1.tar.gz
配置環境變量vi /etc/profile 添加以下內容
#Hadoop
export HADOOP_HOME=/usr/local/apps/hadoop-3.1.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- source /etc/profile
11、配置Hadoop /sbin下
將start-dfs.sh,stop-dfs.sh兩個文件頂部添加以下參數
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
start-yarn.sh,stop-yarn.sh頂部也需添加以下參數:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
12、配置Hadoop /etc下
需要修改的有以下幾個文件:
- hadoop-env.sh
- yarn-env.sh
- core-site.xml
- hdfs-site.xml
- mapred-site.xml
- yarn-site.xml
- workers (Hadoop3.0以前的版本叫做slaves)
(1)、hadoop-env.sh和yarn-env.sh
分別添加JAVA_HOME路徑到hadoop-env.sh和yarn-env.sh中
export JAVA_HOME=/usr/local/java/jdk1.8
(2)、core-site.xml
添加如下代碼
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Carlota1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/temp</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
其中/usr/temp文件夾需要新建!
(3)、hdfs-site.xml
添加如下代碼:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Carlota1:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.web.ugi</name>
<value>supergroup</value>
</property>
</configuration>
其中/usr/dfs/name與/usr/dfs/data文件夾需要新建!
(4)、mapred-site.xml(沒有mapred-site.xml文件可以將mapred-site.xml.template進行重命名爲mapred-site.xml)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Carlota1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Carlota1:19888</value>
</property>
</configuration>
(5)、yarn-site.xml
添加如下代碼:
<configuration>
<property>
<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>
<name>yarn.resourcemanager.address</name>
<value>Carlota1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Carlota1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Carlota1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Carlota1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Carlota1:8088</value>
</property>
</configuration>
(6)、workers
將原內容修改爲
Carlota2
Carlota3
拷貝hadoop安裝文件到子節點
scp /etc/hadoop root@Carlota2:/usr/local/apps/hadoop-3.1.2/etc
scp /etc/hadoop root@Carlota3:/usr/local/apps/hadoop-3.1.2/etc
13、啓動Hadoop集羣
- 格式化主節點的namenode:./bin/hdfs namenode -format
- 主節點上在hadoop目錄下執行:./sbin/start-all.sh
主節點上jps進程如下:
子節點上jps進程如下:
hadoop集羣配置成功!!!