Hadoop分布式集群搭建详细教程


本教程是基于CentOS-7-x86_64的Hadoop完全分布式搭建

1、搭建前的准备

     1)CentOS-7虚拟机3台(hadoop1、hadoop2、hadoop3)

      2)hadoop-3.3.0包

      3)jdk-8u144-linux-x64包

2、整体部署

  hadoop1 hadoop2 hadoop3
HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN NodeManager

ResourceManager

NodeManager

NodeManager

 

 

 

 

 

 

 

3、基本步骤

     1)修改3台虚拟机的名称

            2)关闭、禁止开机自启防火墙

      3)配置静态ip

      4)修改/etc/hosts文件(hadoop1、hadoop2、hadoop3)

      5)配置免密登录(hadoop1、hadoop2、hadoop3)

      6)安装JDK及配置相应环境变量(hadoop1)

      7)安装Hadoop及配置相应环境变量(hadoop1)

      8)修改配置文件(hadoop1)

      9)拷贝(hadoop1-->hadoop2,hadoop1-->hadoop3)

      10)远程同步/etc/profile文件(hadoop1)

      11)格式化NameNode

      12)启动和关闭Hadoop集群

      13)通过浏览器访问Hadoop集群

      14)测试集群,上传文件

4、详细步骤操作

             1)修改3台虚拟机的名称

#hostname             #查看主机名称
hostnamectl set-hostname 主机名 #修改主机名称
#reboot #重启虚拟机

              【注】:修改主机名称后需重启才能生效

       2)关闭、禁止开机自启防火墙

#systemctl  status  firewalld       #查看防火墙状态
#systemctl  stop  firewalld     #关闭防火墙
#systemctl  disable  firewalld      #关闭防火墙开机自启
#vim  /etc/selinux/config        #修改selinux配置文件
SELINUX=enforcing 修改为 SELINUX=disabled

             3)配置静态ip

#cd  /etc/sysconfig/network-scripts/
#vim  ifcfg-ens33
BOOTPROTO=none 改为 BOOTPROTO=static
IPADDR也进行修改

              【注】:因为3台虚拟机都是克隆完成的,ip地址一致,故在此对ip进行修改

       4)修改/etc/hosts文件(hadoop1、hadoop2、hadoop3)

#vim  /etc/hosts
192.168.150.14 hadoop1
192.168.150.15 hadoop2
192.168.150.16 hadoop3
#reboot

              5)配置免密登录(hadoop1、hadoop2、hadoop3)

#ssh-keygen  -t  rsa          #生成ssh密钥,不提示输入密码
三次回车键
#ssh-copy-id hadoop1 #ssh-copy-id hadoop2 #ssh-copy-id hadoop3 #将密钥拷贝到各节点 #ssh hadoop1 #ssh hadoop2 #ssh hadoop3 #测试免密登录

              6)安装JDK及配置相应环境变量(hadoop1)

#cd /opt/            
#mkdir  modules               #创建modules文件夹
#mkdir  tar_packages               #创建tar_packages文件夹
#cd tar_packages/ #进入tar_packages文件夹
将hadoop-3.3.0.tar.gz和jdk-8u144-linux-x64.tar.gz包导入tar_packages文件夹中
导入方法较多,可用Xshell,可用命令wget xxxxx下载,亦可命令rz导入
#tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/modules/ #将压缩包解压到/opt/modules/文件夹下

#cd /opt/modules/jdk1.8.0_144/
#pwd
/opt/modules/jdk1.8.0_144 #复制此路径

#vim /etc/profile/ #修改配置文件,加入环境变量
在文件末尾加入
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

#source /etc/profile #立即生效
#java
#javac
#javadoc #测试java环境
     7)安装Hadoop及配置相应环境变量(hadoop1)
#cd  /opt/tar_packages/
#tar  -zxvf  hadoop-3.3.0.tar.gz   -C  /opt/modules       #将压缩包解压到/opt/modules/文件夹下

#cd  /opt/modules/hadoop-3.3.0
#pwd
/opt/modules/hadoop-3.3.0 #复制此路径

#vim /etc/profile #修改配置文件,加入环境变量
在文件末尾加入
#HADOOP_HOME
export HADOOP_HOME=/opt/modules/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
#source /etc/profile #立即生效 #hadoop #测试hadoop
      8)修改配置文件(hadoop1)
1、修改hadoop-env.sh文件
#cd  /opt/modules/hadoop-3.3.0/etc/hadoop
#vim  hadoop-env.sh 
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144
  2、修改yarn-env.sh文件
#vim  yarn-env.sh
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144

      3、修改mapred-env.sh文件

#vim  mapred-env.sh
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144
  4、修改core-site.xml
#vim  core-site.xml
在<configuration>
</configuration>间加入

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-3.3.0/data/tmp</value>
</property>

 5、修改hdfs-site.xml文件
#  vim  hdfs-site.xml
在<configuration>
</configuration>间加入

<!-- 指定Hadoop副本个数 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>

 6、修改yarn-site.xml文件 
#vim  yarn-site.xml
在<configuration>
</configuration>间加入

<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>

     7、修改mapred-site.xml文件 

#vim  mapred-site.xml
在<configuration>
</configuration>间加入

<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

     8、修改workers文件

#vim  workers
修改为3个主机名称
hadoop1
hadoop2
hadoop3
    【注】:我这里的hadoop-3.3.0版本文件名为workers,hadoop-2.x.x版本文件名为slaves
9)拷贝(hadoop1-->hadoop2,hadoop1-->hadoop3)
#scp -r  /opt/modules/  root@hadoop2:/opt/
#scp -r  /opt/modules/  root@hadoop3:/opt/            #将hadoop1主节点下opt目录下的modules文件夹分别拷贝到hadoop2和hadoop3节点的opt目录下

          10)远程同步/etc/profile文件(hadoop1)

#rsync  -rvl  /etc/profile  root@hadoop2:/etc/profile 
#rsync  -rvl  /etc/profile  root@hadoop3:/etc/profile          #远程同步,将hadoop1主节点上的配置文件分别拷贝到hadoop2和hadoop3节点

#tail /etc/profile #显示已修改的配置文件(/etc/profile)内容,查看是否同步成功
#source /etc/profile #立即生效
#javadoc #测试
#hadoop #测试

#cat /opt/modules/hadoop-3.3.0/etc/hadoop/workers #查看workers文件内容是否一致
   11)格式化NameNode
cd  /opt/modules/hdoop-3.3.0#hadoop  namenode  -format     #格式化NameNode
   12)启动和关闭Hadoop集群
#启动集群
#
cd /opt/modules/hadoop-3.3.0/sbin/ #start-dfs.sh
先在hadoop1节点下执行上述命令start-dfs.sh

#cd /opt/modules/hadoop-3.3.0/sbin/ #start-yarn.sh
等hadoop1主节点下start-dfs.sh命令执行结束后,在hadoop2节点下执行命令start-yarn.sh

#jps #hadoop1、hadoop2、hadoop3一起查看启动的进程

#关闭集群
#stop-yarn.sh
先在hadoop2节点下执行命令stop-yarn.sh

#stop-dfs.sh
等hadoop2节点下stop-yarn.sh命令执行结束后,在hadoop1主节点下执行命令stop-dfs.sh
   【注】:启动集群和关闭集群顺序是相反的,启动时先hadoop1,关闭时后hadoop1
【注】:因hadoop版本不同,hadoop-2.x.x下启动正常,hadoop-3.x.x下可能出现如下错误:
[root@hadoop1 sbin]# start-dfs.sh 
Starting namenodes on [hadoop1]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop3]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

[root@hadoop1 sbin]# start-dfs.sh 
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
     解决办法为:在start-dfs.sh和stop-dfs.sh文件首部加入如下部分
1 HDFS_DATANODE_USER=root
2 HDFS_DATANODE_SECURE_USER=hdfs
3 HDFS_NAMENODE_USER=root
4 HDFS_SECONDARYNAMENODE_USER=root
     在start-yarn.sh和stop-yarn.sh文件首部加入如下部分
1 YARN_RESOURCEMANAGER_USER=root
2 HADOOP_SECURE_DN_USER=yarn
3 YARN_NODEMANAGER_USER=root
    这样这个问题就解决了,记得看清楚自己hadoop的版本号
13)通过浏览器访问Hadoop集群
在浏览器输入:192.168.150.14(主节点ip):9870访问Hadoop文件系统
【注】:hadoop-3.x.x,服务器端口改为了9870,并不是原来的50070,看清自己的Hadoop版本
可在Windows下配置主机节点映射,配置完成后即可在浏览器输入:hadoop1(主节点名称):9870访问Hadoop文件系统
具体映射配置:在C:\Windows\System32\drivers\etc\hosts文件后,加入与在虚拟机/etc/hosts配置一致的内容,即:
#192.168.150.14   hadoop1
#192.168.150.15   hadoop2
#192.168.150.16   hadoop3

         14)测试集群,上传文件

#hadoop  fs  -mkdir  -p   /root/          #创建root目录
#hadoop  fs  -put  /opt/tar_packages/jdk-8u144-linux-x64.tar.gz  /root/        #将/opt/tar_packages/目录下的jdk-8u144-linux-x64.tar.gz压缩包上传到刚才创建的root目录下

 至此,分布式集群搭建完成!

PS:搭建过程中需要的工具我整理了一下,需要的请自取哦!点这里(提取码:u240)

    如果搭建过程遇到了什么难以解决的问题,欢迎留言,毕竟多一个人一起百度可能会快一点!

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM