linux搭建hadoop集群

旧林墨烟 2024-06-13 17:07:05 阅读 77

linux搭建hadoop集群

1、创建4台虚拟机2、修改主机名3、配置网络4、配置hosts文件5、分配本地网络给虚拟机6、下载jdk,hadoop压缩包7、用xftp传输到虚拟机8、配置jdk9、配置hadoop10、创建脚本shell脚本,方便同步数据11、配置ssh免密登录12、同步jdk和hadoop到其它机子13、hadoop核心配置文件15、配置workers15、向其它机子同步以上修改的配置文件16、启动集群17、WordCount测试

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算

1、创建4台虚拟机

创建1台克隆3台即可,这里默认大家都会装了!

我创建的时候用户名是vm1,创建不同的后面命令需要自行甄别

在这里插入图片描述

2、修改主机名

方法一:临时修改,重启失效

hostname vm2

即把主机名改为vm2

在这里插入图片描述

方法二:修改文件,重启生效(4台主机都应该按第二种来配置

编辑 vi /etc/hostname

重启 reboot (可以先不重启,配置完第4点再重启)

在这里插入图片描述

3、配置网络

4台机子都要配!

命令 vim /etc/sysconfig/network-scripts/ifcfg-ens33

重启网络 service network restart

添加以下配置

TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"UUID="cce078fd-5c83-4f0a-a39f-ddaae8c9a1c3"DEVICE="ens33"ONBOOT="yes"IPADDR=192.168.122.101GATEWAY=192.168.122.2DNS1=8.8.8.8

在这里插入图片描述

4、配置hosts文件

4台机子都要配!

命令 vim /etc/hosts

重启 reboot

配置如下:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.122.101 vm1192.168.122.102 vm2192.168.122.103 vm3192.168.122.104 vm4

在这里插入图片描述

5、分配本地网络给虚拟机

在这里插入图片描述

在这里插入图片描述

配置参考一下:

在这里插入图片描述

测试ping百度

在这里插入图片描述

6、下载jdk,hadoop压缩包

我下载的是jdk1.8,hadoop3.3.5

在这里插入图片描述

7、用xftp传输到虚拟机

没有xftp可以去下载一个,用共享文件夹传也是可以的。有办法搞到压缩包发到linux机子就行

先创建文件夹

mkdir /usr/java

mkdir /home/hadoop

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

传输完成

8、配置jdk

解压 tar -zxvf /usr/java/jdk-8u202-linux-x64.tar.gz -C /usr/java/

配置环境变量 vim /etc/profile.d/my_env.sh

配置如下:

#JAVA_HOMEexport JAVA_HOME=/usr/java/jdk1.8.0_202export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述

重新加载profile文件,使配置立即生效 source /etc/profile

检验配置是否成功 java -version

在这里插入图片描述

9、配置hadoop

解压 tar -zxvf /home/hadoop/hadoop-3.3.5.tar.gz -C /home/hadoop/

配置环境变量 vim /etc/profile.d/my_env.sh

追加以下配置

#HADOOP_HOMEexport HADOOP_HOME=/home/hadoop/hadoop-3.3.5export PATH=$PATH:$HADOOP_HOME/binexport PATH=$PATH:$HADOOP_HOME/sbin

在这里插入图片描述

重新加载prfile文件,使配置立即生效 source /etc/profile

检验配置是否成功 hadoop

在这里插入图片描述

10、创建脚本shell脚本,方便同步数据

mkdir /home/vm1/bin (vm1为用户名)

vim /home/vm1/bin/xsync

输入以下内容:

#!/bin/bash#1.判断参数个数if [ $# -lt 1 ]thenecho Not Enough Arguement!exit;fi#2.遍历集群所有机器for host in vm1 vm2 vm3 vm4doecho ============================ $host ============================ #3。遍历所有目录,挨个发送for file in $@do#4.判断文件是否存在if [ -e $file ]then#5。获取父目录pdir=$(cd -P $(dirname $file); pwd)#6.获取当前文件的名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidonedone

在这里插入图片描述

修改文件权限 chmod 777 /home/vm1/bin/xsync

在这里插入图片描述

测试:xsync /home/vm1/bin/xsync

把当前文件同步给其它三台机子,因为没有ssh免密登录,所以需要输入每台机子的密码,按要求输入即可,后面会配置ssh免密登录的

在这里插入图片描述

去别的机子查看文件是否同步过来了

ls /home/vm1/bin

在这里插入图片描述

发现其它机子都收到了这个文件,以后我们想要别的机子同步本机子的文件直接使用这个脚本

11、配置ssh免密登录

hadoop要求必须配的,配了之后就可以不输入密码直接登录别的机子了

在vm1上执行以下命令

生成密钥对 ssh-keygen -t rsa (三连回车)

把公钥放在vm1上 ssh-copy-id vm1 (要输入yes并输入密码)

把公钥放在vm2上 ssh-copy-id vm2 (要输入yes并输入密码)

把公钥放在vm3上 ssh-copy-id vm3 (要输入yes并输入密码)

把公钥放在vm4上 ssh-copy-id vm4 (要输入yes并输入密码)

在这里插入图片描述

测试免密登录

登录 ssh vm2

退出 exit

在这里插入图片描述

现在只能在vm1免密登录其它机子,要相互免密登录的话按上面步骤在每台机子都执行一次

成功后不妨回归测试一下,之前的脚本已经不用输入密码了,想同步数据非常方便

xsync /home/vm1/bin/xsync

在这里插入图片描述

12、同步jdk和hadoop到其它机子

在vm1执行同步命令

xsync /home/hadoop/hadoop-3.3.5 /usr/java/jdk1.8.0_202 /etc/profile.d/my_env.sh

第一次同步文件有点多,耐心等一下

完成后去另外的机子查看同步结果

ls /usr/java/

ls /home/hadoop/

在这里插入图片描述

重新加载环境,使环境变量立即生效 source /etc/profile

测试是否完成 java -version

在这里插入图片描述

13、hadoop核心配置文件

(1)配置core-site.xml

命令:vim $HADOOP_HOME/etc/hadoop/core-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration> <!-- 指定NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://vm1:8020</value> </property> <!-- 指定hadoop数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop-3.3.5/data</value> </property> <!-- 配置HDFS网页登录使用的静态用户为atguigu --> <property> <name>hadoop.http.staticuser.user</name> <value>vm1</value> </property></configuration>

在这里插入图片描述

(2)HDFS配置文件

配置hdfs-site.xml

命令:vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- nn web端访问地址--><property> <name>dfs.namenode.http-address</name> <value>vm1:9870</value> </property><!-- 2nn web端访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>vm3:9868</value> </property></configuration>

在这里插入图片描述

(3)YARN配置文件

配置yarn-site.xml

命令:vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration> <!-- 指定MR走shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>vm2</value> </property> <!-- 环境变量的继承 --> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property></configuration>

在这里插入图片描述

(4)MapReduce配置文件

配置mapred-site.xml

命令:vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定MapReduce程序运行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property></configuration>

在这里插入图片描述

15、配置workers

命令:vim $HADOOP_HOME/etc/hadoop/workers

在该文件中增加如下内容:

vm1vm2vm3vm4

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

15、向其它机子同步以上修改的配置文件

命令:xsync $HADOOP_HOME

在这里插入图片描述

可以去验证有没有同步完成

16、启动集群

(1) 如果集群是第一次启动,需要在vm1节点格式化NameNode (注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

格式化命令:hdfs namenode -format

在这里插入图片描述

(2)启动HDFS

命令:$HADOOP_HOME/sbin/start-dfs.sh

在这里插入图片描述

(3)在配置了ResourceManager的节点(vm2)启动YARN

命令:$HADOOP_HOME/sbin/start-yarn.sh

在这里插入图片描述

(4)Web端查看HDFS的NameNode

浏览器中输入:http://vm1:9870

在这里插入图片描述

(5)Web端查看YARN的ResourceManager

浏览器中输入:http://vm2:8088

在这里插入图片描述

17、WordCount测试

1、本地写文件

创建文件夹:mkdir $HADOOP_HOME/WordCount

创建文件1:

echo 'This is the first hadoop test program!' > $HADOOP_HOME/WordCount/file1.txt

创建文件2:

echo 'This program is not very difficult, but this program is a common hadoop program!' > $HADOOP_HOME/WordCount/file2.txt

2、文件上传到fs

创建文件夹:hadoop fs -mkdir /input

上传文件:hadoop fs -put $HADOOP_HOME/WordCount/*.txt /input

3、执行程序

执行wordcount程序:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /input /output

查看输出文件:hadoop fs -ls /output

查看查询结果:hadoop fs -cat /output/part-r-00000

在这里插入图片描述

觉得不错就点个赞吧!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。