hadoop完全分布式环境搭建

参考:

  1. VMware安装教程
  2. 超级无敌详细ubantu搭建hadoop完全分布式集群
  3. hadoop完全分布式搭建

一、环境说明

  • win10专业版,16GB RAM。
  • machine1: Linux Ubantu18.04,4GB RAM,40G硬盘,CPU1核4线程
  • machine2: Linux Ubantu18.04,2GB RAM,40G硬盘,CPU1核4线程
  • machine3: Linux Ubantu18.04,2GB RAM,40G硬盘,CPU1核4线程
  • VMware Workstation Pro 16
  • hadoop-2.7.7
  • jdk_3u341

二、hadoop全分布系统搭建步骤

1. 新建一台虚拟机,并安装ubantu18.04

2. 前期准备

安装vmware-tools

请添加图片描述
点击安装VMware Tools后,ubantu桌面上会多出一个压缩包,现在打开Terminal(终端),输入sudo tar -zxvf 路径+压缩包名字 ,右键点击压缩包properties可查看压缩包的路径。

安装vim

sudo apt install vim

安装ssh-server

创建hadoop用户

请添加图片描述

为hadoop用户添加sudo权限

3. 配置静态ip、hosts文件、克隆虚拟机、更改主机名

1.配置静态IP、hosts文件、克隆虚拟机、更改主机名

配置静态IP

先点开虚拟网络编辑器查看IP地址网关

请添加图片描述
请添加图片描述

请添加图片描述

记得先登录hadoop用户后再开始以下所有所有的步骤,重启之后也要记得登录用户!!

cd /etc/netplan
ls
  • 查看完配置文件,使用sudo vi 进入配置文件(文件名字可能会有区别)
sudo vi 01-network-manager-all.yaml

请添加图片描述

  • 进行配置

vi 编辑器刚进入的时候默认是命令模式,要按一下 i 进入编辑模式。如果编辑完成想要退出,首先先按一下Esc到命令模式然后输如 :wq!
保存退出,如果不想保存退出就使用:q!命令。

请添加图片描述

  • 退出之后启动网卡
sudo netplan apply 
ip a                       查看IP的命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
请添加图片描述

  • 配置hosts文件

hosts文件是本地域名解析,一个本地的DNS。它将IP地址和主机名相互解析

也是使用vi 编辑器进行编辑
vi  /etc/hosts

初始状态master应该是127.0.1.1,记得要修改为你需要的IP地址。

请添加图片描述

  • 克隆虚拟机

先关闭master虚拟机然后点击虚拟机-----管理----克隆----下一步----下一步----选择创建完全克隆----下一步----更改虚拟机名称为slave1,位置自己选择即可。点击完成。即可看到VMware里多了一台名为slave1的虚拟机。slave2操作相同,就是虚拟机名称改为slave2即可。创建完如下图:

img

  • 配置slave1和slave2

注意此时slave1和slave2虚拟机是克隆的,所以说配置文件和master是完全相同的,登录的话也是master的用户和密码(用户:hadoop 密码:你自己设置的)登录上咱们要给他更改一下主机名和IP地址。打开slave1、slave2虚拟机进行以下操作:

对slave1虚拟机进行操作的命令,操作的时候会让你输入密码
就输入hadoop用户的密码

hostnamectl set-hostname slave1          这个命令是永久更改主机名
sudo login           执行完这个命令会让你重新登录以下直接hadoop用户登录

对slave2虚拟机进行相同操作

hostnamectl set-hostname slave2          注意这里是slave2
sudo login           

更改slave1的IP地址

vi /etc/netplan/00-installer-config.yaml
sudo netplan apply                          配置完启动一下网络服务
ip a                                        查看一下是否配置成功

请添加图片描述

请添加图片描述

  • 更改slave2的IP地址

操作跟slave1命令一样,把 0 改成 2 保存退出即可,也要使用sudo netplan apply
命令启动一下网络服务。使用ip a查看一下是否配置成功

2.配置ssh免密登录

ssh-keygen -t rsa    每台机器都要执行这个命令,一路回车就可以了
  • 执行完上面的命令,会发现用户目录下有一个.ssh的目录,使用下面的命令查看一下
cd ~/.ssh/
ls 

img

现在在master节点touch一个名为authorized_keys的文件然后使用cat命令将master的公钥追加到这个文件里。命令如下:

touch authorized_keys
cat id_rsa.pub >> authorized_keys

img

然后将slave1的公钥使用scp命令复制到master节点上

scp ~/.ssh/id_rsa.pub hadoop@msater:~/

img

  • 可以看到master节点用户命令下多了一个id_rsa_pub的文件
    img
  • 同样使用cat命令将slave1的公钥追加到authorized_keys文件里
cat id_rsa_pub >> .ssh/authorized_keys
cat .ssh/authorized_keys

img

使用相同的命令将slave2的公钥传到master节点里并写入authorized_keys文件里

scp /home/hadoop/.ssh/id_rsa.pub hadoop@master:~/ 在slave2里执行

(这里说明一下执行完上面这个命令会把之前咱们传的slave1的公钥文件覆盖掉,没什么影响。在master节点里执行下面的命令)

cat id_rsa_pub >> .ssh/authorized_keys
cat .ssh/authorized_keys

img

然后使用scp命令将master节点里的authorized_keys文件分别上传到slave1和slave2节点的.ssh/目录下

scp /home/hadoop/.ssh/authorized_keys hadoop@slave1:~/.ssh/
scp /home/hadoop/.ssh/authorized_keys hadoop@slave2:~/.ssh/
  • 验证ssh免密登录
ssh slave1   远程登录slave1命令,如果想登录其他节点,将slave1改成其他主机的主机名即可
exit       这个是退出命令

img

最后的最后,最好执行以下步骤

# ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
# ssh-copy-id -i ~/.ssh/id_rsa.pub slave2

3.上传并解压JDK、Hadoop压缩包

  • 使用Xftp软件进行上传

注意:使用Xftp之前要确保宿主机(就是自己的电脑)和虚拟机相互通信。

  • 点击【连接】会出现下面界面
    img

出现下面界面,咱们可以直接把左面电脑里的文件拖到右面的虚拟机里。当然虚拟机里的文件也可以直接拖到自己电脑里。

img

  • 将hadoop、jdk压缩文件拖到虚拟机里
    img
  • 也可以到master用户目录下查看
    img
  • 解压hadoop、jdk
sudo tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/    -C参数是指定解压到哪个目录下
sudo tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/local/
cd /usr/local/      到这个目录下
ls    查看一下

img

  • 给这两个权限,归hadoop用户所有
sudo chown -R hadoop hadoop-2.7.7/
sudo chown -R hadoop jdk1.8.0_251
ll    查看一下

img

4.添加环境变量

vi .bashrc        在这个文件最后添加如下内容,三台机器都需要添加。
source .bashrc     添加完成之后执行这个条命令,让其生效。

img

  • 验证一下是否添加成功

    此时只有master主机会显示添加成功!!!

java -version

img

四、配置Hadoop文件

  • 首先进入存放Hadoop配置文件的目录
cd /usr/local/hadoop-2.7.7/etc/hadoop/      进入此目录
ls    查看一下

请添加图片描述

1.配置核心组件core-site.xml

vi core-site.xml    打开文件,添加以下内容

<property>
	<name>fs.defaultFS</name>
	<value>hdfs://192.168.100.100:9000</value>
</property>
<property>
	<name>hadoop.tmp.dir</name>
	<value>/home/hadoop/hadoopdata</value>
</property>

请添加图片描述

2.配置hadoop-env.sh

vi hadoop-env.sh   添加JDK的安装目录

export JAVA_HOME=/usr/local/jdk1.8.0_251

img

3.配置hdfs-site.xml

vi hdfs-site.xml

<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>

请添加图片描述

4.配置yarn-site.xml

vi yarn-site.xml
	
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.resourcemanager.address</name>
	<value>192.168.89.100:18040</value>
</property>								        
<property>
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>192.168.89.100:18030</value>
</property>
<property>
	<name>yarn.resourcemanager.resource-tracker.address</name>
	<value>192.168.89.100:18025</value>
</property>
<property>
	<name>yarn.resourcemanager.admin.address</name>
	<value>192.168.89.100:18141</value>
</property>
<property>
	<name>yarn.resourcemanager.webapp.address</name>
	<value>192.168.89.100:18088</value>
</property>

请添加图片描述

5.配置mapred-site.xml

使用cp命令复制mapred-site.xml.template文件为mapred-site.xml

cp mapred-site.xml.template  mapred-site.xml     使用cp命令进行复制

vi mapred-site.xml   添加以下内容

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

img

6.配置yarn-env.sh

sudo vi yarn-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_251

请添加图片描述

7. 配置slaves文件

将文件里的内容改为三个结点的名称。

sudo vi slaves

master

slave1

slave2

请添加图片描述

五、复制文件

1.使用scp命令将hadoop、jdk文件复制到slave1和slave2节点上。

这一步之前最好再核对一次之前的配置文件有没有问题,一旦出错,又要重新发送,非常繁琐。

在master节点执行下面命令

sudo scp -r /usr/local/hadoop-2.7.7 hadoop@slave1:~/
sudo scp -r /usr/local/hadoop-2.7.7 hadoop@slave2:~/
sudo scp -r /usr/local/jdk1.8.0_251 hadoop@slave1:~/
sudo scp -r /usr/local/jdk1.8.0_251 hadoop@slave2:~/
此时已经将这两个文件复制到slave1、slave2节点的用户目录下

2.移动文件

在slave1、slave2节点执行下面命令
sudo mv /home/hadoop/hadoop-2.7.7/ /usr/local/
sudo mv /home/hadoop/jdk1.8.0_251/ /usr/local/

source .bashrc    生效一下环境变量,每台节点都要执行。

img

六、启动集群

1.在master节点格式化namenode

hdfs namenode -format       进行格式化

2.start-all.sh启动集群

start-all.sh 

请添加图片描述

  • 查看master节点的进程

请添加图片描述

  • 查看slave1节点的进程

    通过ssh slave1访问,通过exit退出

请添加图片描述

  • 查看slave2节点的进程
    请添加图片描述

3.通过浏览器访问UI 集群信息图

在浏览器中输入192.168.89.100:50070

请添加图片描述

4.通过浏览器访问Yarn web 信息图

在浏览器中输入192.168.89.100:18088

请添加图片描述

至此Hadoop完全分布式搭建完成

五、wordcount的实现

  1. 首先确认你的hadoop启动了。

启动hadoop:start-all.sh

  1. 具体实现

进入hadoop安装目录:cd /usr/local/hadoop-2.7.7

查看目录下情况:ll

请添加图片描述

这里我们就以LICENSE.txt文件作为输入源文件,可以查看下license内容:

$ cat LICENSE.txt ,我们统计下里面各个单词出现的次数。

3.1 在HDFS中创建input目录

就在刚才hadoop 目录下,输入命令:hadoop fs -mkdir /input 之后可以用命令看:$hadoop fs -ls / 我们创建input目录成功,截图

如下图:

请添加图片描述

我们将LICENSE.txt放到input目录下:hadoop fs -put LICENSE.txt /input 可以通过命令:hadoop fs -ls /input看到license.txt已经存在input目录下了,截图如下图:

请添加图片描述

接下来只需要将/input通过hadoop自带示例程序wordcount计算出其中各字母出现的次数便可,命令:hadoop jar /usr/local/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output
(ps:根据自己hadoop版本和路径相应的调整):
请添加图片描述

可以通过命令$hadoop fs -ls /看出,HDFS系统下多了个/output /tmp目录。

请添加图片描述

打开/output目录可以看到下面有两个文件(_SUCCESS和part-r-00000),说明已经运行成功了,

请添加图片描述

直接打开part-r-00000便可以查看结果,命令
$hadoop fs -cat /output/part-r-00000,结果如图:

请添加图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值