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集群搭建成功。

 

posted @ 2022-11-11 16:32  方大帝的博客  阅读(397)  评论(0编辑  收藏  举报