centos7上搭建hadoop3集群
准备工作:
本人是在阿里云上开了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集群搭建成功。