欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)

程序员文章站 2022-07-14 15:17:13
...

Hadoop安装教程

1、准备工作

1.1 安装三台CentOS7虚拟机

hadoop-1是namenode,hadoop-2和hadoop-3都是datanode
使用:ip adrr查看并记住三台虚拟机所对应IP

1.2 修改主机名(root 权限 操作三台)

[aaa@qq.com ~]# hostname          #查看当前的 hostnmae

localhost

[aaa@qq.com ~]# hostnamectl  set-hostname  hadoop-1      #永久修改hostname(立即生效)

[aaa@qq.com ~]# hostname                                   # 检查修改

hadoop-1

其余两台以同样方式分别将主机名修改为:hadoop-2、hadoop-3

1.3 修改HOSTS(root权限 操作三台)

修改HOSTS的原因主要有两点:

1.Hadoop 内部机制需要通过主机名对主机进行访问。

2.使用主机名对 Hadoop 集群进行配置,看起来更加一目了然。

在CentOS7中修改HOSTS 操作命令如下:

[aaa@qq.com ~]# vi /etc/hosts

#在文件中添加集群所有主机的IP和主机名的对应关系,IP 与主机名之间使用一个 TAB 键分隔

192.168.80.132   hadoop-1  
192.168.80.133   hadoop-2
192.168.80.134   hadoop-3

1.4 关闭防火墙(root权限 操作三台)

Centos7 中使用 systemctl 命令来管理服务,命令如下:

[aaa@qq.com ~]# firewall-cmd --state  				   #查看状态
[aaa@qq.com ~]# systemctl disable firewalld            # 永久关闭防火墙(重启生效)
[aaa@qq.com ~]# systemctl stop firewalld               # 临时关闭防火墙(立即生效)

1.5 同步时间(root权限 操作三台)

CentOS7 网络同步时间命令如下:

 yum  install  ntpdate     #安装过程中,需要按提示输入两次Y或yes
 ntpdate  cn.pool.ntp.org  #安装完毕后,执行该语句同步时间

1.6 配置SSH免密登录(root权限 操作三台)

给三台虚拟机生成**

以hadoop-1为例,执行命令,生成空字符串的秘钥(后面要使用公钥),命令是:

ssh-****** -t rsa  #安装过程中需要按四次Enter键

CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)

将公钥拷贝到要免密登录的目标机器上

在hadoop-1上执行以下命令:

ssh-copy-id  hadoop-2
ssh-copy-id  hadoop-3

在hadoop-2上执行以下命令:

ssh-copy-id  hadoop-1
ssh-copy-id  hadoop-3

在hadoop-3上执行以下命令:

ssh-copy-id  hadoop-1
ssh-copy-id  hadoop-2

测试免密登陆

在hadoop-2服务器执行命令

ssh hadoop-1

CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)
可以看到在没有输入密码的情况下从服务器hadoop-2成功登录到hadoop-1服务器,此时就可以在hadoop-2服务器操作hadoop-1服务器。三台机器互相ssh一下,第一次登录需要输入yes,之后就不需要了。出现上图表示成功。测试能连接后不要忘记执行 exit 退出登录
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)

2、JDK环境安装(操作三台)

2.1 下载JDK

下载网址:JDK下载网址
选择图中红框版本
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)

2.2 将JDK文件上传到Linux服务器上

这里使用root账号登录,安装到/usr/local/java目录下。上传及新建文件夹推荐使用XShell+Xftp

2.2 执行解压命令

cd /usr/local/java/
tar -zxvf jdk-8u261-linux-x64.tar.gz

2.3 配置环境变量

vi /etc/profile

在末尾加上:

JAVA_HOME=/usr/local/java/jdk1.8.0_261(这里 JAVA_HOME=你自己的jdk路径)
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

然后执行 source /etc/profile 命令使修改的配置文件生效。

2.4 测试

执行命令:

javac或者java -version

出现下图代表JDK安装成功
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)

3、Hadoop安装

3.1 Hadoop下载

这里选择的版本是3.2.0
Hadoop3.2.0下载

3.2 将Hadoop文件上传到Linux服务器上

在opt目录下新建一个名为hadoop的目录,并将下载得到的hadoop-3.2.0.tar上载到该目录下

3.2 解压安装

tar -xvf hadoop-3.2.0.tar.gz

3.3 配置Hadoop环境变量

vi /etc/profile

在末尾加上:

export HADOOP_HOME=/opt/hadoop/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

然后执行 source /etc/profile 命令使修改的配置文件生效。

3.4 测试

执行命令:

hadoop version

4、Hadoop配置文件修改

4.1 新建几个目录

在/root目录下新建几个目录,以此复制粘贴执行下面的命令:

mkdir /root/hadoop
mkdir /root/hadoop/tmp
mkdir /root/hadoop/var
mkdir /root/hadoop/dfs
mkdir /root/hadoop/dfs/name
mkdir /root/hadoop/dfs/data

4.2 修改etc/hadoop中的一系列配置文件

修改core-site.xm
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml

在节点内加入配置:

 <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
   </property>
   <property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop-1:9000</value>
   </property>
修改hadoop-env.sh
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh
将		export   JAVA_HOME=${JAVA_HOME}
修改为: export   JAVA_HOME=/usr/local/java/jdk1.8.0_261
        说明:修改为自己的JDK路径
修改hdfs-site.xml
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml 

在节点内加入配置::

<property>
   <name>dfs.name.dir</name>
   <value>/root/hadoop/dfs/name</value>
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently. </description>
</property>
 
<property>
   <name>dfs.data.dir</name>
   <value>/root/hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
 
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>
 
<property>
   <name>dfs.permissions</name>
   <value>false</value>
   <description>need not permissions</description>
</property>
新建并且修改mapred-site.xml
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/mapred-site.xml

在节点内加入配置:

<!-- 配置mapReduce在Yarn上运行(默认本地运行) -->
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>
修改workers文件
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/workers

将里面的localhost删除,添加以下内容:

hadoop-1
hadoop-2
hadoop-3
修改yarn-site.xml文件
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/yarn-site.xml 

在节点内加入配置

   <property>
        <description>指定YARN的老大(ResourceManager)的地址</description>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop-1</value>
   </property>
 
<!-- NodeManager上运行的附属服务。需要配置成mapreduce_shfffle,才可运行MapReduce程序默认值 -->
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
   </property>
 
   <property>
        <discription>每个节点可用内存,单位MB,默认8182MB</discription>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
   </property>
 
   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
   </property>
配置hadoop-3.2.0/sbin/目录下start-dfs.sh、start-yarn.sh、stop-dfs.sh、stop-yarn.sh文件

在start-dfs.sh、stop-dfs.sh开始第一行加上

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

在start-yarn.sh、stop-yarn.sh开始第一行加上

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
配置好后,将 hadoop-1上的 /opt/hadoop/hadoop-3.2.0 文件夹传递复制到从节点
scp -r /opt/hadoop/hadoop-3.2.0 aaa@qq.com-2:/opt/hadoop/
scp -r /opt/hadoop/hadoop-3.2.0 aaa@qq.com-3:/opt/hadoop/
 
scp /etc/profile aaa@qq.com-2:/etc/    #copy配置文件到各个节点
scp /etc/profile aaa@qq.com-3:/etc/

5、启动Hadoop

5.1 格式化namenode

因为hadoop-1是namenode,hadoop-2和hadoop-3都是datanode,所以只需要对hadoop-1进行初始化操作,也就是对hdfs进行格式化。
进入到hadoop-1这台机器/opt/hadoop/hadoop-3.2.0/bin目录:

  cd /opt/hadoop/hadoop-3.2.0/bin

执行初始化脚本

  ./hadoop namenode -format

5.2 启动Hadoop

从hadoop-1开始,在三台分别运行:

start-all.sh

5.2 运行结果

hadoop-1是我们的namenode,该机器的IP是192.168.217.128,在本地电脑访问如下地址:

http://192.168.80.132:9870/

自动跳转到了overview页面
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)
在本地浏览器里访问如下地址:
http://192.168.217.128:8088/
自动跳转到cluster页面
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)

在hadoop-1中输入

jps

出现结果如图:
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)

在hadoop-2中输入

jps

出现结果如图:
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)
在hadoop-3中输入

jps

出现结果如图:
CentOS7下搭建Hadoop3.2.0完全分布式集群(亲娘级教程超详细)