centOS7.5+jdk8+hadoop3
vim的一些简单命令
i ---插入进行修改
esc ---返回
:wq ---退出并保存
修改主机名
阿里云-master
腾讯云-worker1
百度云-worker2
hostnamectl set-hostname master
hostnamectl set-hostname worker1
hostnamectl set-hostname worker2
修改host文件
vi /etc/hosts
在阿里云服务器中,编辑/etc/hosts文件:
47.98.xx.xxx master ---阿里云私网IP地址 主机名
a21.b21.c21.d21 worker1 ---腾讯云公网IP地址 主机名
a21.b21.c21.d21 worker2 ---百度云公网IP地址 主机名
在腾讯云服务器中,编辑/etc/hosts文件:
a11.b11.c11.d11 master ---阿里云公网IP地址 主机名
a22.b22.c22.d22 worker1 --腾讯云私网IP地址 主机名
a21.b21.c21.d21 worker2 ---百度云公网IP地址 主机名
在百度云服务器中,编辑/etc/hosts文件:
xx.xx.xx.xxx master ---阿里云公网IP地址 主机名
a21.b21.c21.d21 worker1 ---腾讯云公网IP地址 主机名
a21.b21.c21.d21 worker2 ---百度云私网IP地址 主机名
关闭所有节点的防火墙
sudo systemctl stop firewalld.service # 关闭firewall
sudo systemctl disable firewalld.service # 禁止firewall开机启动
ssh免密码登录
[root@master ~]# ssh-keygen -t rsa # 一路回车即可
[root@master ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@master ~]# chmod 0600 ~/.ssh/authorized_keys
[root@master ~]# scp ~/.ssh/authorized_keys root@worker1:~/.ssh
[root@master ~]# scp ~/.ssh/authorized_keys root@worker2:~/.ssh
ssh localhost 此时没有密码就能登录
ssh worker1
ssh worker2
官网下载jdk很慢:
华为有个镜像可以下载:https://repo.huaweicloud.com/java/jdk/
hadoop下载地址
http://mirrors.hust.edu.cn/apache/hadoop/common
下载文件到/home文件夹下,
cd /home
cd /home 进入home文件夹,
tar -zvxf jdk-8u201-linux-x64.tar.gz 解压jdk
mv jdk1.8.0_201 java 重命名解压后的文件夹
tar -zvxf hadoop-3.1.3.tar.gz 解压hadoop
mv hadoop-3.1.3 hadoop
vim /etc/profile 设置环境变量
export JAVA_HOME=/home/java
export HADOOP_HOME=/home/hadoop
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile 是环境变量生效
查看一下Hadoop和Java是不是配置好了worker1和worker2也用同样的方法配置
$HADOOP_HOME/etc/hadoop/目录下
配置hadoop-env.sh
export JAVA_HOME=/home/java
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
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<description>文件系统URL,3个一样</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/log/hadoop/tmp</value>
<description>A base for other temporary directories</description>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>worker1:50090</value>
<description>Secondary名称节点的URL</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/hadoop/dfs/name </value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/hadoop/dfs/data </value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>每个文件复制2块</description>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>5</value>
<description>默认值</description>
</property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>选择用yarn来管理</description>
</property>
</configuration>
在worker文件加入datanode节点的主机名
在master配好之后,发送到worker1和worker2
scp $HADOOP_HOME/etc/hadoop/* root@worker1:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/* root@worker2:$HADOOP_HOME/etc/hadoop/
hdfs namenode -format
start-all.sh
stop-all.sh
遇到的一个大坑 ,要在云服务器配置安全组,开始只配置了自己笔记本ip加入安全组,可以在本地访问hadoop集群的网站,但是却发现没有datanode几点,查看worker1的日志,一直在重试连接master,看了各种博客,各种说法,格式化多次导致ID不匹配,防火墙没关,检查一遍又一遍,都没有问题,结果发现是worker1和worker2 的IP没有加到master的安全组!!!!!累死我了