CentOS7 下 Hadoop 分布式部署
阿新 • • 發佈:2019-03-31
dns get order sna framework implement 格式 ipad pat
Hadoop 服務劃分
使用三臺節點,集群部署規劃如下
服務\主機 |
hadoop1 |
hadoop2 |
hadoop3 |
---|---|---|---|
HDFS |
NameNode DataNode |
DataNode |
SecondaryNameNode DataNode |
YARN |
NodeManager |
ResourceManager NodeManager |
NodeManager |
IP地址規劃
hadoop1 192.168.123.11 hadoop2 192.168.123.12 hadoop3 192.168.123.13
系統環境配置
一、基本信息配置(三臺節點需要分別配置)
IP地址配置
# 配置 IP 地址,網卡配置文件不一定相同 vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 自啟動網卡 ONBOOT="yes" # IP地址 IPADDR="192.168.123.11" # 子網頁碼 PREFIX="24" # 網關 GATEWAY="192.168.123.2" # DNS 服務器 DNS1="119.29.29.29" # 重啟網絡服務 systemctl restart network
修改主機名
# 修改主機名字為 hadoop1 hostnamectl set-hostname hadoop1 # 退出當前用戶再登錄即可看見 logout
關閉防火墻,也可放行
# 關閉防火墻
systemctl stop firewalld
# 關閉防火墻開機自啟動
systemctl disable firewalld
安裝 Rsync 工具,用於同步主機之間的文件,這樣後面的配置文件修改就不用每臺機器都改一遍,直接同步過去即可
# 清空 yum 源。若已配置源,直接安裝即可 rm -rf /etc/yum.repos.d/* # 配置阿裏 yum 源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 安裝 rsync yum install -y rsync
二、基本服務配置(配置一臺主機,其他主機同步即可)
配置主機之間相互免密登錄
# 以一臺機器為例子,其他一樣 # 生成密鑰文件,一直回車 ssh-keygen -t ecdsa -b 521 # 配置免密登錄,需要輸入遠程主機密碼,本機也需要配置 ssh-copy-id -i ~/.ssh/id_ecdsa.pub hadoop1 ssh-copy-id -i ~/.ssh/id_ecdsa.pub hadoop2 ssh-copy-id -i ~/.ssh/id_ecdsa.pub hadoop3 # 驗證,不用輸密碼即為成功 ssh hadoop1 ls /
添加主機名到 Hosts 文件
vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 對應本機IP地址,非 127.0.0.1 192.168.123.11 hadoop1 192.168.123.12 hadoop2 192.168.123.13 hadoop3
安裝 JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
# 解壓 tar -zxf /opt/jdk-8u202-linux-x64.tar.gz -C /opt/ # 配置環境變量 vim /etc/profile # JAVA_HOME export JAVA_HOME=/opt/jdk1.8.0_202/ export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH # 刷新環境變量 source /etc/profile # 驗證 java -version # java version "1.8.0_202" # Java(TM) SE Runtime Environment (build 1.8.0_202-b08) # Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
安裝 Hadoop https://hadoop.apache.org/releases.html
# 解壓 tar -zxf /opt/hadoop-2.9.2-snappy-64.tar.gz -C /opt/ # 配置環境變量 vim /etc/profile # HADOOP_HOME export HADOOP_HOME=/opt/hadoop-2.9.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin # 刷新環境變量 source /etc/profile # 驗證 hadoop version # Hadoop 2.9.2 # Subversion Unknown -r Unknown # Compiled by root on 2018-12-16T09:39Z # Compiled with protoc 2.5.0 # From source with checksum 3a9939967262218aa556c684d107985 # This command was run using /opt/hadoop-2.9.2/share/hadoop/common/hadoop-common-2.9.2.jar
同步服務到其他機器
# 同步 Hosts 文件 rsync -avz /etc/hosts hadoop2:/etc/ rsync -avz /etc/hosts hadoop3:/etc/ # 同步 JDK,源路徑不要帶斜杠 rsync -avz /opt/jdk1.8.0_202 hadoop2:/opt/ rsync -avz /opt/jdk1.8.0_202 hadoop3:/opt/ # 同步 Hadoop,源路徑不要帶斜杠 rsync -avz /opt/hadoop-2.9.2 hadoop2:/opt/ rsync -avz /opt/hadoop-2.9.2 hadoop3:/opt/ # 同步環境變量文件 profile,目標主機上的環境變量需要手動刷新:source /etc/profile rsync -avz /etc/profile hadoop2:/etc/ rsync -avz /etc/profile hadoop3:/etc/
Hadoop分布式配置
配置一臺機器,其他同步即可,配置文件目錄:hadoop-2.9.2/etc/hadoop/
一、基本配置
core-site.xml
<configuration> <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop1:9000</value> </property> <!-- 指定Hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop-tmp</value> </property> </configuration>
hadoop-env.sh
# The java implementation to use. export JAVA_HOME=/opt/jdk1.8.0_202/
二、HDFS 配置
hdfs-site.xml
<configuration> <!-- 指定文件塊副本數 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- 指定Hadoop輔助名稱節點主機配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop3:50090</value> </property> </configuration>
三、YARN 配置
yarn-env.sh
# some Java parameters export JAVA_HOME=/opt/jdk1.8.0_202/
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <!-- Reducer獲取數據方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop2</value> </property> </configuration>
四、MapReduce 配置
mapred-env.sh
# limitations under the License. export JAVA_HOME=/opt/jdk1.8.0_202/ # when HADOOP_JOB_HISTORYSERVER_HEAPSIZE is not defined, set it.
mapred-site.xml,將 mapred-site.xml.template 重命名為 mapred-site.xml
<configuration> <!-- 指定MapReduce運行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
五、集群節點地址配置
slaves
# 所有節點主機的地址
hadoop1
hadoop2
hadoop3
六、將配置文件同步到其他節點
# 將 Hadoop 配置文件同步到其他節點上 rsync -avz /opt/hadoop-2.9.2 hadoop2:/opt/ rsync -avz /opt/hadoop-2.9.2 hadoop3:/opt/
啟動 Hadoop 集群
一、第一次使用需要先格式化 NameNode,這裏是在 hadoop1 上執行格式化
hadoop namenode -format
二、在 NameNode 所在節點啟動 hdfs,這裏是 hadoop1
start-dfs.sh
三、在 ResourceManger 所在節點啟動 yarn,這裏是 hadoop2
start-yarn.sh
查看各個節點進程
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html
CentOS7 下 Hadoop 分布式部署