linux搭建hadoop集群

news2024/11/16 9:52:15

linux搭建hadoop集群

  • 1、创建4台虚拟机
  • 2、修改主机名
  • 3、配置网络
  • 4、配置hosts文件
  • 5、分配本地网络给虚拟机
  • 6、下载jdk,hadoop压缩包
  • 7、用xftp传输到虚拟机
  • 8、配置jdk
  • 9、配置hadoop
  • 10、创建脚本shell脚本,方便同步数据
  • 11、配置ssh免密登录
  • 12、同步jdk和hadoop到其它机子
  • 13、hadoop核心配置文件
  • 15、配置workers
  • 15、向其它机子同步以上修改的配置文件
  • 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.101
GATEWAY=192.168.122.2
DNS1=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.localdomain6
192.168.122.101 vm1
192.168.122.102 vm2
192.168.122.103 vm3
192.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_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_202
export 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_HOME
export HADOOP_HOME=/home/hadoop/hadoop-3.3.5
export PATH=$PATH:$HADOOP_HOME/bin
export 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 ]
then
	echo Not Enough Arguement!
	exit;
fi
#2.遍历集群所有机器
for host in vm1 vm2 vm3 vm4
do
	echo ============================  $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:$pdir
			else
				echo $file does not exists!
		fi
	done
done

在这里插入图片描述

修改文件权限 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

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

vm1
vm2
vm3
vm4

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

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

在这里插入图片描述

觉得不错就点个赞吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/642580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

希尔贝壳参与构建可信人工智能数据空间,助力大模型行业应用落地

2023年5月30日&#xff0c;由中国信息通信研究院、浙江省经济和信息化厅、杭州市人民政府、中国人工智能产业发展联盟主办的杭州通用人工智能发展论坛在未来科技城圆满落幕。本次会议以“大模型应用机遇和挑战”为主题&#xff0c;众多产学研代表现场参会&#xff0c;共同探讨人…

什么是可以文言文字翻译的呢?

大家有没有在日常生活中需要翻译自己不熟的外语呢&#xff1f;有没有觉得使用翻译软件的时候很轻松呢&#xff1f;你们知道文本翻译这个操作吗&#xff1f;它是一项很实用和创新的技术&#xff0c;可以将一种语言自动翻译转换为另一种语言&#xff0c;当然这些一般都是使用计算…

YOLOv5-7.0添加解耦头

Decoupled Head Decoupled Head是由YOLOX提出的用来替代YOLO Head&#xff0c;可以用来提升目标检测的精度。那么为什么解耦头可以提升检测效果呢&#xff1f; 在阅读YOLOX论文时&#xff0c;找到了两篇引用的论文&#xff0c;并加以阅读。 第一篇文献是Song等人在CVPR2020发表…

根据实体excel导入导出百万数据,可修改表头名称

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 表格导入导出实现效果展示根据实体类导出模板读取表格数据导出数据为excel进阶&#xff1a;修改表格导出的列头 controller示例工具类测试实体实体注解maven依赖 表…

基于SpringBoot+微信小程序的医院预约叫号小程序

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 该项目是基于uniappWe…

加密软件VMProtect教程:使用Windows、Net 、UNIX 秘钥生成器

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic&#xff08;本机&#xff09;、Virtual Pascal和XCode编译器。 同时&#xff0c;VMProtect有一个内置的反汇编程序&#xff0c;可以与Windows和Mac OS X可执行文件一起…

VMware虚拟机和主机传输文件

原文链接 虚拟机为Linux系统 使用vm-tools即可。 卸载旧工具&#xff1a; vmware-uninstall-tools.pl安装新工具&#xff1a; apt-get install open-vm-tools-desktop重启系统&#xff1a; reboot此时可以使用CtrlC、CtrlV的方式在主机和Linux虚拟机之间传输文件。 虚拟…

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

&#x1f94a;作者&#xff1a;一只爱打拳的程序猿&#xff0c;Java领域新星创作者&#xff0c;CSDN、阿里云社区优质创作者。 &#x1f93c;专栏收录于&#xff1a;计算机网络原理 本篇主要讲解&#xff1a;TCP协议段格式&#xff0c;TCP的序列号&#xff0c;SYN、ACK标志位&a…

操作系统(王道)

1.1_1_操作系统概念 裸机&#xff08;硬件只听得懂二进制指令&#xff09;——>操作系统&#xff08;属于软件&#xff0c;提供良好交互界面&#xff09;——>应用软件——>用户使用 操作系统是指控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织…

Python技术自学的方式

Python是一种高级编程语言&#xff0c;被广泛用于软件开发、数据分析、人工智能和科学计算等领域。它于1991年由Guido van Rossum创建&#xff0c;并且其简洁、易读的语法以及丰富的标准库使得它成为了初学者和专业开发人员的首选语言之一。 一、Python技术介绍 学习Python技术…

css响应式布局

这里写自定义目录标题 1.效果展示2.使用grid布局3.使用flex布局 1.效果展示 2.使用grid布局 <!DOCTYPE html> <html><head><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno"…

ASEMI代理安森美MOS管FQL40N50参数,FQL40N50描述

编辑-Z FQL40N50参数描述&#xff1a; 型号&#xff1a;FQL40N50 漏源电压VDSS&#xff1a;500V 漏极电流ID&#xff1a;40A 漏极电流-脉冲IDM&#xff1a;160A 栅极-源极电压VGSS&#xff1a;30V 功耗PD&#xff1a;460W 操作和储存温度范围TJ, TSTG&#xff1a;-55 t…

Rust in Action笔记 第六章 内存

Option<T>类型在Rust中使用了空指针优化&#xff08;null pointer optimization&#xff09;来保证该类型在编译后的二进制文件中占用0个字节。None变量是通过一个空指针null pointer来表示&#xff1b;内存地址、指针、引用的区别&#xff0c;内存地址是指在内存中的一个…

SpringBatch从入门到实战(三):多步骤控制

一&#xff1a;if else案例 案例&#xff1a;如果开始步骤成功了就执行成功步骤&#xff0c;否则执行失败步骤。 // 伪代码 String exitStatus helloWorldJob(); if("FAILED".equals(exitStatus)){failStep(); }else{successStep(); }Configuration public class …

01 面向对象方法的概念

面向对象方法的概念 1、什么是面向对象? 面向对象不仅仅是一种程序开发方法 使用面向对象程序设计语言 使用对象、类、继承、封装、消息等基本概念进 行编程 面向对象是一种软件方法学 如何看待软件系统与现实世界的关系 以什么观点进行求解 如何进行系统构造 2、面向对象方…

chatgpt赋能python:Python导入自己写的包详解

Python导入自己写的包详解 在Python中&#xff0c;我们可以将代码封装成包来重复利用&#xff0c;也可以将自己写的包分享给其他人使用。但是&#xff0c;在使用自己写的包时&#xff0c;如何进行导入呢&#xff1f; 什么是包&#xff1f; 在Python中&#xff0c;包是一个有…

计算机网络(更新中)

本文是个人笔记&#xff0c;都是概念&#xff0c;没基础不建议看。 绪论 计算机网络的定义 最简单的定义&#xff1a;计算机网络是一些互相连接的、自治的计算机的集合因特网&#xff08;Internet&#xff09;是“网络的网络” 计算机网络的组成&#xff08;物理组成&#x…

git从http切换到ssh

git从http切换到ssh 之前项目代码git clone的http的git地址&#xff0c;后来禁用了http协议&#xff0c;只能用ssh协议。 1. 生成ssh公钥 进入Git Bash Here, 执行以下命令 ssh-keygen -m PEM -t rsa -b 4096 -C "your.emailemail.com"一直Enter直到完成。 2. 添加…

个人对几个IDE的看法

&#xff08;说明&#xff1a;本文仅表达个人看法&#xff0c;实际上文中的几个IDE功能不同&#xff0c;不能互相取代。截图上的程序均已发布&#xff09; 个人认为一款IDE在功能完整的前提下&#xff0c;应当做到操作简便。另外&#xff0c;对缩放的兼容性也会影响观感。以下…

微服务springcloud 01 sts环境,maven管理,和springcloud简介,通用模块commons

01.使用的环境是sts和maven。 02.介绍springcloud springcloud是一个大的微服务框架。 03.Spring cloud对比Dubbo Dubbo Dubbo只是一个远程调用(RPC)框架;默认基于长连接,支持多种序列化格式 Spring Cloud 框架集&#xff0c;提供了一整套微服务解决方案(全家桶);基于http调用…