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

Hadoop集群搭建(完全分布式)

程序员文章站 2022-05-07 17:09:25
...
                        Hadoop集群搭建(完全分布式) 

一,Hadoop运行环境搭建

1.1 虚拟机网络模式设置为NAT

Hadoop集群搭建(完全分布式)
Hadoop集群搭建(完全分布式)
重新启动电脑:

reboot

**

1.2 克隆一台新建的虚拟机

**Hadoop集群搭建(完全分布式)
Hadoop集群搭建(完全分布式)
Hadoop集群搭建(完全分布式)
Hadoop集群搭建(完全分布式)
命名为Hadoop101
启动虚拟机

1.3修改静态IP

1…3.1修改虚拟机的MAC地址

在终端中输入:
#vim /etc/udev/rules.d/70-persistent-net.rules

进入这个界面,将eth0行删除;将eth1改为eth0,同时复制物理IP地址
Hadoop集群搭建(完全分布式)

1.3.2修改IP地址

#vim /etc/sysconfig/network-scripts/ifcfg-eth0
Hadoop集群搭建(完全分布式)

1.3.3 重启网卡

#vim service network restart

如果报错重启虚拟机

#reboot

1.4 修改主机名

1.4.1 修改Linux的hosts文件

1.查看主机名

#hostname

2.修改主机名

#vim /etc/sysconfig/network

修改文件中主机名称
HOSTNAME=hadoop101
注意:主机名称不要有“_”下划线

3.保存退出

4.打开 /etc/hosts添加如下内容:

192.168.60.101 hadoop101
192.168.60.102 hadoop102
192.168.60.103 hadoop103

5.重启设备

1.4.2修改windows的hosts文件

1.进入 C:\Windows\System32\drivers\etc 路径 打开hosts文件添加如下内容:

注意:网址使用的是当前电脑的网址

192.168.60.101 hadoop101
192.168.60.102 hadoop102
192.168.60.103 hadoop103

1.5关闭防火墙

1.查看防火墙状态

#chkconfig iptables --list

2.关闭防火墙

#chkconfig iptables off

1.6 在opt目录下创建文件夹

1.创建hadoop用户

#adduser hadoop
#passwd hadoop

2.设置hadoop用户具有root权限

#vim /etc/sudoers
Hadoop集群搭建(完全分布式)

强制保存:

:wq!

3.在/opt目录下创建文件夹

#cd /opt
#mkdir module software

修改所有者

#chown hadoop:hadoop module software
#ls -al

1.7 安装JDK

1.如果jdk版本低于1.7,卸载该jdk:

#java -version 查看jdk版本

2.将jdk,hadoop导入到opt目录下的software文件夹下面
Hadoop集群搭建(完全分布式)
Hadoop集群搭建(完全分布式)
3.查看导入是否成功

4.解压jdk到/opt/module目录下

#tar -zxvf jdk1.8.0_162.tar.gz -C /opt/module

5.配置jdk环境变量

(1)先获取 jdk 路径:

#cd /opt/module/jdk1.8.0_162

#pwd 复制jdk路径

(2)打开/etc/profile 文件:

#vi /etc/profile

在 profie 文 件 末 尾 添 加 jdk 路 径 :

export JAVA_HOME=/opt/module/jdk1.8.0_162
export PATH=PATH:PATH:JAVA_HOME/bin

(3)保存后退出

(4)让修改后的文件生效:

#source /etc/profile

(5)测试 jdk 安装成功

#java -version

1.8 创建另外两台虚拟机

1.将hadoop101关机并克隆两台虚拟机hadoop102,hadoop103

Hadoop集群搭建(完全分布式)
2.将克隆出来的两台虚拟机执行如下操作:
修改mac地址
修改IP地址
重启网卡
修改主机名

1.9安装Hadoop

注:在hadoop101主机上完成以下操作

1.进入到1.Hadoop 安装包路径下:

#cd /opt/software/

2.解压安装文件到/opt/module 下面

#tar -zxf hadoop-2.7.6.tar.gz -C /opt/module/

3.查看是否解压成功

#ls /opt/module/ hadoop-2.7.6

4.在/opt/module/hadoop-2.7.6/etc/hadoop 路径下配置hadoop-env.sh
(1)Linux 系统中获取 jdk 的安装路径:

#echo $JAVA_HOME

(2)修改 hadoop-env.sh 文件中 JAVA_HOME 路径:

#vi hadoop-env.sh

修改JAVA_HOME 如下

export JAVA_HOME=/opt/module/jdk1.8.0_162

5.将 hadoop 添加到环境变量
(1)获取 hadoop 安装路径:

#cd /opt/module/hadoop-2.7.6
#pwd 复制hadoop路径

(2)打开/etc/profile 文件:

#vi /etc/profile

在 profie 文件末尾添加 hadoop 路径:

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

(3)保存后退出:

:wq

(4)让修改后的文件生效:

#source /etc/profile

6.修改/opt 目录下的所有文件所有者为hadoop

#chown hadoop:hadoop -R /opt/

7.通过scp命令将hadoop101上的文件拷到hadoop102和hadoop103上

7.1拷贝module文件夹
在hadoop101上执行:

#scp -r /opt/module/ aaa@qq.com:/opt
#scp -r /opt/module/ aaa@qq.com:/opt

7.2拷贝hadoop101服务器上的/etc/profile
在Hadoop102和hadoop103上分别执行:
#scp aaa@qq.com:/etc/profile /etc/profile

8.ssh免密码登录

1.无**配置
1.1进入到我的 home 目录

#cd ~

1.2生成公钥和私钥:

#ssh-****** -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)

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

#ssh-copy-id hadoop101
#ssh-copy-id hadoop102 
#ssh-copy-id hadoop103

注:需要分别在三台服务器上执行免密操作

9.切换到hadoop 用户

    #su hadoop

10.编写集群分发脚本

 注:以下操作均在hadoop用户下执行

1.需求分析:循环复制文件到所有节点的相同目录下。
2.案例实操:
(1)在/usr/local/bin 目录下创建 xsync 文件,文件内容如下:

# touch xsync 
#vim xsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$# if((pcount==0));
 then echo no args;
exit; 
fi

#2 获取文件名称
p1=$1 
fname=`basename $p1`
 echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd` 
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=3; host<5; host++)); 
do
#echo $pdir/$fname aaa@qq.com$host:$pdir 
echo --------------- hadoop0$host ----------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

(2)修改脚本 xsync 具有执行权限

# chmod 777 xsync 
#chown hadoop:hadoop -R xsync

11.编写集群操作脚本

1.需求分析:在所有主机上同时执行相同的命令xcall +命令
2.具体实现
(1)在/usr/local/bin 目录下创建 xcall 文件,文件内容如下:

# touch xcall 
#vi xcall
#!/bin/bash 
pcount=$# 
if((pcount==0));
then
echo no args;
exit;
fi
echo -------------localhost----------
aaa@qq.com
for((host=101; host<=104; host++)); 
do 
echo ----------hadoop$host---------
ssh hadoop$host aaa@qq.com
done

(2)修改脚本 xcall 具有执行权限

#chmod 777 xcall 
#chown hadoop:hadoop xcall

12.配置集群

1.集群部署规划

                     hadoop101                       hadoop102                          hadoop103

HDFS NameNode DataNode SecondaryNameNode
DataNode DataNode

YARN NodeManager ResourceManager,NodeManger NodeManager

2.配置文件

(1)core-site.xml
#vim core-site.xml

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

(2)hdfs
hadoop-env.sh
#vi hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_162

hdfs-site.xml
#vi hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>
</property>

slaves
#vim slaves

hadoop101 
hadoop102 
hadoop103

(3)yarn
yarn-env.sh
#vi yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_162

yarn-site.xml
#vi yarn-site.xml

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

(4)mapreduce
mapred-env.sh
#vim mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_162

mapred-site.xml
#vim mapred-site

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

3.在集群上分发以上所有文件

$ xsync/opt/module/hadoop-2.7.6/etc/hadoop/core-site.xml 
$ xsync /opt/module/hadoop-2.7.6/etc/hadoop/yarn-site.xml 
$ xsync /opt/module/hadoop-2.7.6/etc/hadoop/slaves
...

注:以上配置文件需要修改成相应的服务器名称

13.集群启动及测试

1.启动集群
(1)如果集群是第一次启动,需要格式化 namenode
hadoop101上执行:
#bin/hdfs namenode -format
(2)启动HDFS:
hadoop101上执行
#sbin/start-dfs.sh

通过xcall脚本查看三台服务器进程
#xcall /opt/module/jdk路径/bin/jps

(3)启动yarn
hadoop102上执行:
$ sbin/start-yarn.sh

注:Namenode 和 ResourceManger 如果不是同一台机器,不能在 NameNode 上启动 yarn,应该在 ResouceManager 所在的机器上启动yarn。

14.集群停止方式

1.各个服务组件逐一启动
(1)分别启动 hdfs 组件
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
(2)启动 yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
2.各个模块分开启动(配置 ssh 是前提)常用
(1)整体启动/停止 hdfs start-dfs.sh
stop-dfs.sh
(2)整体启动/停止 yarn start-yarn.sh
stop-yarn.sh
3.全部启动(不建议使用)
start-all.sh
stop-all.sh

相关标签: hadoop集群