准备工作:
本人是在阿里云上开了3个centos7,模拟集群状态。
所有操作都是在root用户,用其他账号可能会带来问题,建议先在root用户操作,搭建完成没问题了可以用其他账户试试。
一、安装jdk
hadoop3最低需要jdk8,所以需要先在每个节点上安装jdk8,这里不再多说,只要保证最后java -version能运行出来就行,3台机子都要装好。
二、配置机器名称
我的机子:10.0.2.4是node1(master),10.0.2.15是node2(slave),10.0.2.5是node3(slave)
分别进入3台机器,依次配置,以node1为例:
①
vi /etc/sysconfig/network
# Created by anaconda
HOSTNAME=node1
②
vi /etc/hostname
node1
③
vi /etc/hosts
追加内容,注意换行,ip改成自己的机器
10.0.2.4 node1
10.0.2.15 node2
10.0.2.5 node3
以上3步3台机子都操作一次。
三、设置ssh免密登录
此步骤只需要在master机子上操作就行,不需要操作3次!!!
ssh-keygen -t rsa
敲几下回车,直到key生成,执行拷贝公钥输入:
ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.2.4
ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.2.15
ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.2.5
这里要注意,本机也要这么copy操作一下,所以我copy了3次,不是2次。
然后测试一下,看看是否免密登录:
ssh node1
ssh node2
ssh node1 回到node1(需要密码)
ssh node3
ssh node1 再次回到node1(需要密码)
安装hadoop3:
一、下载解压
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz
我是把下载包放到 /opt/hadoop/路径下,你随意。
解压,解压完会自动创建一个hadoop-3.3.2目录
cd /opt/hadoop
tar -zxvf hadoop-3.3.2.tar.gz
然后,在这个目录下创建hdfs目录,然后在hdfs目录里分别再创建3个子目录:name,tmp,data,创建目录命令mkdir不会的百度一下,这几个目录留着后面配置用。
二、配置
所有路径请改成自己的
cd /opt/hadoop/hadoop-3.3.2/etc/hadoop
①
vi hadoop-env.sh
export JAVA_HOME=/opt/java/jdk1.8.0_321 #JAVA_HOME写上自己jdk 的安装路径
②
vi yarn-env.sh
export JAVA_HOME=/opt/java/jdk1.8.0_321 #JAVA_HOME写上自己jdk 的安装路径
③
vi core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop/hadoop-3.3.2/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
添加到<configuration></configuration>里面
④
vi hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/hadoop-3.3.2/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/hadoop-3.3.2/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node1:9001</value>
</property>
<property>
<name>dfs.http.address</name>
<value>node1:50070</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
添加到<configuration></configuration>里面
⑤
vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
添加到<configuration></configuration>里面
⑥
vi yarn-site.xml
<property>
<name>yarn.resourcemanager.address</name>
<value>node1:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>node1:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node1:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>node1:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>node1:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
添加到<configuration></configuration>里面
⑦
vi workers
把原本的localhost删掉,新增:
node2
node3
⑧
cd /opt/hadoop/hadoop-3.3.2/sbin
vi start-dfs.sh
在文件头部加上以下:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vi stop-dfs.sh
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vi start-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
vi stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
⑨把配置好的hadoop发送到2个slave机器
scp -r /opt/hadoop/hadoop-3.3.2/ root@node2:/opt/hadoop/hadoop-3.3.2/
scp -r /opt/hadoop/hadoop-3.3.2/ root@node3:/opt/hadoop/hadoop-3.3.2/
三、配置hadoop环境变量,3台机子都配置一下
vi /etc/profile
export HADOOP_HOME=/opt/hadoop/hadoop-3.3.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile
四、启动和测试
只在node1操作,第一次启动的话,先格式化一下(如果频繁格式化,可能导致启动失败,需要先stop-all.sh,然后删掉前面手动创建的tmp data name目录,再格式化)
hdfs namenode -format
然后启动:
cd /opt/hadoop/hadoop-3.3.2/sbin
./start-all.sh
相当于同时运行了start-dfs.sh和start-yarn.sh。
如果控制台没有报错的话,在master机器node1敲命令jps
在2个slave机器node2 node3分别敲命令jps
如果master和slave机器都能出现截图的中的服务在运行,则恭喜部署成功。
没问题的话,然后我们可以测试一下:
hadoop jar /opt/hadoop/hadoop-3.3.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.2.jar pi 10 10
如果运行正常不报错,能出现计算结果则再次证明hadoop集群搭建成功。