推荐大家看完上一篇伪分布搭建,在上一篇中,基础条件都有详细配置过程,本次全分布式搭建只是在伪分布的基础上有所加深。
相较于伪分布,多了以下内容
第一步:添加主机名与IP映射(每个节点都要配置)
vi /etc/hosts,增加以下内容:
192.168.154.110 master
192.168.154.111 slvae1
192.168.154.112 slave2
第二步:主从节点免密登陆
在每个用户的家目录下的.ssh目录:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub sun@master
ssh-copy-id -i ~/.ssh/id_rsa.pub sun@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub sun@slave2
或者在主节点的家目录下的.ssh目录执行:
ssh-keygen -t rsa
然后生成了id_rsa与id_rsa.pub,分别是私有与公有秘钥,我们要把公有秘钥复制到一个authorized_keys文件内,这个文件的作用就是完成无密码访问。
然后执行:
scp -r /home/sun/.ssh/authorized_keys sun@slave1/2:/home/sun/.ssh/
或
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
scp /root/.ssh/id_rsa.pub root@slave1:/root/.ssh/authorized_keys
scp /root/.ssh/id rsa.pub root@slave2:/root/.ssh/authorized_keys
再给所有虚报机上的authorized_keys添加权限
chmod 644 /root/.ssh/authorized_keys
第三步:配置Java和hadoop的环境变量
vi /etc/profile
export JAVA_HOME=jdk目录
export PATH=$PATH: $JAVA_HOME/bin
export HADOOP_HOME=hadoop目录
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新环境变量
source /etc/profile
第四步:修改配置文件
vi hadoop-env.sh
export JAVA_HOME=jdk目录
export HADOOP_HOME=hadoop目录
vi core-site.xml
<!--设定hadoop运行时产生文件的存储路径 -->
hadoop.tmp.dir
file:/home/sun/app/hadoop-3.1.2/tmp
a base for other tempory directories.
<!--指定namenode的通信地址,默认8020端口 -->
fs.defaultFS
hdfs://master:9000
vi hdfs-site.xml
dfs.name.dir
/home/sun/app/hadoop-3.1.2/tmp/dfs/name
dfs.data.dir
/home/sun/app//hadoop-3.1.2/tmp/dfs/data
dfs.replication
1
注:这个文件可以设置namenode,secondarynamenode的位置
dfs.namenode.http-address
msater:50070
dfs.namenode.secondary.http-address
msater:50090
dfs.replication
2
dfs.permissions
false
need not permissions
vi mapred-site.xml
mapreduce.framework.name
yarn
yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME=$HADOOP_HOME
mapreduce.map.env
HADOOP_MAPRED_HOME=$HADOOP_HOME
mapreduce.reduce.env
HADOOP_MAPRED_HOME=$HADOOP_HOME
mapreduce.map.memory.mb
2048
或者
mapred.job.tracker
msater:49001
mapred.local.dir
/usr/local/hadoop/var
mapreduce.framework.name
yarn
vi yarn-site.xml
yarn.resourcemanager.hostname
master
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.vmem-check-enabled
false
yarn.nodemanager.vmem-pmem-ratio
5
或者
yarn.resourcemanager.hostname
node1
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.application.classpath
输入刚才返回的Hadoop classpath路径
- 在master机器上/home/hadoop/hadoop/etc/hadoop/路径下修改
vi workers
添加如下内容
slave1
slave2
- 修改
/home/hadoop/hadoop/sbin/
目录下的几个文件,分别在start-dfs.sh
和stop-dfs.sh
中添加如下内容:
HDFS_DATANODE_USER=hadoop
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=hadoop
HDFS_SECONDARYNAMENODE_USER=hadoop
分别在 start-yarn.sh
和 stop-yarn.sh
中添加如下内容:
YARN_RESOURCEMANAGER_USER=hadoop
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=hadoop
或者 vi hadoop-env.sh
添加如下代码
export JAVA_HOME=jdk目录
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.1
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
第五步:同步
使用scp命令将master下的目录复制到各个从节点的相应位置上
scp -r jdk目录 node2:jdk目录
scp -r hadoop目录 node2:hadoop目录
scp -r /etc/profile node2:/etc/
scp -r jdk目录 node3:jdk目录
scp -r hadoop目录 node3:hadoop目录
scp -r /etc/profile node3:/etc/
在从节点(slave1 slave2)上分别运行下述命令刷新环境变量
source /etc/profile