搭建Hadoop分布式集群

软件和操作系统版本

Hadoop框架是采用Java语言编写,需要java环境(jvm) JDK版本:JDK8版本 ,本次使用的是 Java: jdk-8u431-linux-x64.tar.gz

Hadoop: hadoop-3.3.6.tar.gz

三台Linux虚拟节点: CentOS-7-x86_64-DVD-2009.iso

通过虚拟机设置共享文件夹将需要的安装包复制到linux虚拟机中。(/opt/software/)

[root@localhost1 software]# ll
total 912972
-rwxrwxrwx. 1 root root 730107476 Dec 23 20:43 hadoop-3.3.6.tar.gz
-rwxrwxrwx. 1 root root 148362647 Dec 23 22:10 jdk-8u431-linux-x64.tar.gz
-rwxrwxrwx. 1 root root      1068 Dec 24 11:29 LICENSE
-rwxrwxrwx. 1 root root  56405224 Dec 24 11:29 VMwareTools-10.3.21-14772444.tar.gz

集群规划

LinuxLocalhost1Localhost2Localhost3
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerNodeManager,  ResourceManagerNodeManager

安装JDK

tar -zxvf jdk-8u431-linux-x64.tar.gz -C /usr/local/java/

配置环境变量:

vi /etc/profile# java environment
JAVA_HOME=/usr/local/java/jdk1.8.0_431
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

让环境变量生效:

source /etc/profile 

安装Hadoop

tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/applications

添加Hadoop到环境变量

vi /etc/profile#HADOOP
HADOOP_HOME=/usr/local/applications/hadoop-3.3.6
PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
export HADOOP_HOME PATH

让环境变量生效:

source /etc/profile 

验证hadoop

hadoop version

集群配置

cd  /usr/local/applications/hadoop-3.3.6/etc/hadoop/

HDFS集群配置

配置:hadoop-env.sh

export JAVA_HOME=/usr/local/java/jdk1.8.0_431

指定NameNode节点以及数据存储目录(修改core-site.xml)

<!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://localhost1:9000</value></property><!-- 指定Hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/usr/local/applications/hadoop-3.3.6/data/tmp</value></property>

指定secondarynamenode节点(修改hdfs-site.xml)

    <!-- 指定Hadoop辅助名称节点主机配置 --><property><name>dfs.namenode.secondary.http-address</name><value>localhost3:50090</value></property><!--副本数量 --><property><name>dfs.replication</name><value>3</value></property>

指定datanode从节点(修改workers文件,每个节点配置信息占一行)

localhost1
localhost2
localhost3

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

MapReduce集群配置

指定MapReduce使用的jdk路径(修改mapred-env.sh)

export JAVA_HOME=/usr/local/java/jdk1.8.0_431

指定MapReduce计算框架运行Yarn资源调度框架(修改mapred-site.xml)

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

Yarn集群配置

指定JDK路径 

vi yarn-env.sh

export JAVA_HOME=/usr/local/java/jdk1.8.0_431

指定ResourceMnager的master节点信息(修改yarn-site.xml)

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

分发配置

远程复制文件夹:将localhost1 配置好的Hadoop 复制到localhost2 和localhost3

scp -r /usr/local/applications/hadoop-3.3.6 root@localhost2:/usr/local/applications/hadoop-3.3.6
scp -r /usr/local/applications/hadoop-3.3.6 root@localhost3:/usr/local/applications/hadoop-3.3.6

配置SSH 密钥登陆

生成Key Pairs

在三台节点分别生成 Key Pairs, 默认名字 id_rsa, 千万不要改。

ssh-keygen -t rsa -C "root@localhost1"
ssh-keygen -t rsa -C "root@localhost2"
ssh-keygen -t rsa -C "root@localhost3"

key pairs 默认生产到 ~/.ssh/

[root@localhost1 .ssh]# ll
total 16
-rw-------. 1 root root 1191 Jan  5 20:22 authorized_keys
-rw-------. 1 root root 1679 Jan  5 20:04 id_rsa
-rw-r--r--. 1 root root  397 Jan  5 20:04 id_rsa.pub
-rw-r--r--. 1 root root  564 Jan  5 10:40 known_hosts

把三个节点的公钥互相发送到每个节点

添加公钥到远程服务器

ssh-copy-id root@localhost2
ssh-copy-id root@localhost3

添加公钥到本地

cat localhost1.pub >> authorized_keys

添加完成以后三个节点都有了所有节点的公钥

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTmy6v6Xsv4893ofLyMVyct439T4ePv/OfEtpMPtBqLsobyiDV1Ih0H17oxI8Mk4UvZIEgokyLDq8lz8n3v4Vr5RfaCLRvbFEmn7SEzV+tBeRd9tO9rccaSjBT5NfOlFpLecucbA1JP3sS1PgVmyGvD6xE490gD1EGKWDi04fxifwvrEJPxkIRS/FKKik1fB4IRtReKQlAkh/JwE3mvBdNbL0jeOKiB01ofQfV2xoOgooBJSkQNhRqxtPccWuH6GrKK3uTTpPZWZvCoW1vHKOaOH59AGFuRlrO6yobLdQueS/VE8jx7VdlZonICorgQuxUwQsCR9Ys+xKRwcpTtWin root@localhost1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdRLWUfYgCZ5KS2yC6BaOtCz/nsnb6EjO8jt6q8o9deen3+/jN/hnqhHFAEPRFGKq4WwPy4awYlo1sqDxgc8GrpzUUUnkIsnERhXp9L0df99X360t9QgNwNiz3ayTa40oAT0Zg1GbftjRH/foJIReEUA1IjGTAphTQYnKwWMsTOXeIqI7A2QeUUQvxVkNWJ/lTO59vCxIA0NJUkgdMgXImfGlb23gtX/RlJ0NCqdoOm83qrNLHcC+iIwOrKpFx9v88qdajiDi+pI1AqWz1fQD6LpIx9OojM9ZPb2VYvCSt4smvCECxH+r3/HOB68+bumynm2w26XQumZA/utpQgJaH root@localhost2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAZ36gymNo4jmEkeS9fuwSlZ5mceFPOQcmgKnfSEi4LWzRdg1hmHK3bOzFabnRLaKGZvtK1GBFtZFHF8LAmP4/BXyDAxpU2/kFkWjn+z/Cu4bfAUl98M1Gqj7L3iv360wpGLz/VB65YIBxn88sac4hEZZUSFNMZxbRm2MIdN05YVgN7z84nLph3VNLzfpdfqnn6fLP8Fu6qwd8NaE91M95Lf7xBIdO1k0+/4/RLjTWfnpo4pKw1YM1CgGQEuz0JW6+yNuDyDwtlgNXDZeOni9JBjda/UQckguQMDDFrRzgsFTK9j5tywJQSlE0TDXIqyIUSgiajO6V//XGFP1weVLP root@localhost3

关闭防火墙

三个linux节点都需要关闭防火墙,这个Hadoop集群才能互相访问。

临时关闭

systemctl stop firewalld

永久关闭

systemctl stop firewalldsystemctl disable firewalld

查看防火墙状态

systemctl status firewalld

启动集群

1,Namenode执行格式化

hadoop namenode -format

注意:如果集群是第一次启动,需要在Namenode所在节点格式化NameNode,非第一次不用执行格 式化Namenode操作!!

2, 启动HDFS

在namenode 节点执行:

cd /usr/local/applications/hadoop-3.3.6/sbin/start-dfs.sh

3, 启动YARN

在ResouceManager节点执行:

cd /usr/local/applications/hadoop-3.3.6/sbin/start-yarn.sh

4, 启动完成后

查看三台节点进程

[root@localhost1 hadoop-3.3.6]# jps
5232 Jps
4775 DataNode
4623 NameNode
5119 NodeManager[root@localhost2 hadoop-3.3.6]# jps
3001 ResourceManager
3161 NodeManager
3514 Jps
2796 DataNode[root@localhost3 ~]# jps
2793 DataNode
2907 SecondaryNameNode
3115 Jps
2991 NodeManager

5, web端查看Hdfs界面

http://localhost1:9870/dfshealth.html#tab-overview

集群测试

1, HDFS 分布式存储

在locahost1创建并上传文件
#创建hdfs 文件夹
hdfs dfs -mkdir -p /test/input#本地hoome目录创建一个文件
cd /root/tmp
vi test.txt
hello world
#上传linxu文件到Hdfs
hdfs dfs -put /root/tmp/test.txt /test/input
在localhost2 尝试下载
#从Hdfs下载文件到linux本地
hdfs dfs -get /test/input/test.txt
去hdfs文件目录页面去查看

http://localhost1:9870/explorer.html#/

2, MapReduce 分布式计算

在HDFS文件系统根目录下面创建一个wcinput文件夹

hdfs dfs -mkdir /wcinput

在/root/tmp 目录下创建一个wc.txt文件(本地文件系统)

vi wc.txthadoop mapreduce yarn
hdfs hadoop mapreduce
mapreduce yarn jack
jack
jack neil neil neil

上传wc.txt到Hdfs目录/wcinput下

hdfs dfs -put wc.txt /wcinput

执行程序

执行程序之前,/wcinput必须存在, /wcoutput必须不存在。

cd $HADOOP_HOMEhadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /wcinput /wcoutput

执行程序的时候可能回报错,

需要修改 /usr/local/applications/hadoop-3.3.6/etc/hadoop/mapred-site.xml

加入以下配置。不需要重启服务。

<property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

然后再次执行程序

查看结果

[root@localhost1 hadoop-3.3.6]# hdfs dfs -cat /wcoutput/part-r-00000
hadoop	2
hdfs	1
jack	3
mapreduce	3
neil	3
yarn	2

也可以到页面上下载结果

YARN  RESOURCE MANAGER 页面 查看程序执行情况
http://localhost2:8088/cluster

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

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

相关文章

分享一下使用高版本(3.10.x)sonar-maven-plugin 进行构建时需要注意的两个问题

SonarScanner用来执行源代码分析。这个独立的程序在CI/CD主机上运行&#xff0c;并将分析结果发送到SonarQube服务器&#xff0c;由其计算分析结果&#xff0c;计算质量门并生成报告。我们可以通过命令行和maven构建两种方式来执行SonarScanner的源码分析。关于SonarScanner更多…

C语言---函数和数组实践:扫雷游戏

函数和数组实践&#xff1a;扫雷游戏 在这次的实践项目中&#xff0c;需要编写一个可以在在控制台运行的经典的扫雷游戏。 一、游戏要求 游戏有菜单&#xff0c;可以通过菜单实现继续玩或者退出游戏游戏要求棋盘9*9&#xff0c;雷&#xff08;10个&#xff09;要求随机布置可…

数据结构与算法之二叉树: LeetCode 701. 二叉搜索树中的插入操作 (Ts版)

二叉搜索树中的插入操作 https://leetcode.cn/problems/insert-into-a-binary-search-tree/description/ 描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树返回插入后二叉搜索树的根节点。 输入数据 保…

数据集-目标检测系列- 石榴 检测数据集 pomegranate >> DataBall

数据集-目标检测系列- 石榴 检测数据集 pomegranate >> DataBall DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(fre…

项目实战——使用python脚本完成指定OTA或者其他功能的自动化断电上电测试

前言 在嵌入式设备的OTA场景测试和其他断电上电测试过程中&#xff0c;有的场景发生在夜晚或者随时可能发生&#xff0c;这个时候不可能24h人工盯着&#xff0c;需要自动化抓取串口日志处罚断电上电操作。 下面的python脚本可以实现自动抓取串口指定关键词&#xff0c;然后触发…

深入详解DICOM医学影像定位线相关知识:理解定位线的概念、定位线的作用以及定位线显示和计算原理

DICOM医学影像中的定位线(Localization Line) 在医学影像学中,DICOM是用于存储和交换医学影像的标准格式。定位线(Localization Line)在医学影像的显示和分析中起着重要作用,它帮助医生和医学专业人员在影像中精确地标定重要的解剖结构、区域或特征,辅助进行定位、治疗计…

《自动驾驶与机器人中的SLAM技术》ch8:基于 IESKF 的紧耦合 LIO 系统

目录 基于 IESKF 的紧耦合 LIO 系统 1 IESKF 的状态变量和运动过程 1.1 对名义状态变量的预测 1.2 对误差状态变量的预测及对协方差矩阵的递推 2 观测方程中的迭代过程 3 高维观测中的等效处理 4 NDT 和 卡尔曼滤波的联系 5 紧耦合 LIO 系统的主要流程 5.1 IMU 静止初始化 …

HTML实战课堂之简单的拜年程序

一、目录&#xff1a; &#xfffc;&#xfffc; 一、目录&#xff1a; 二、祝福 三&#xff1a;代码讲解 &#xff08;1&#xff09;详细解释&#xff1a; 1.HTML部分 2. CSS部分 三、运行效果&#xff08;随机截图&#xff09;&#xff1a; 四、完整代码&#xff1a; 二、祝福…

vue 与 vue-json-viewer 实现 JSON 数据可视化

前言 接口的调试和测试是确保系统稳定性的重要步骤。为了让开发人员和测试人员能够直观地查看接口返回的 JSON 数据&#xff0c;使用合适的工具至关重要。vue-json-viewer 插件为 vue 开发者提供了一个简单而强大的解决方案。本文将详细介绍如何在 vue 项目中使用该插件&#x…

用Pygame Zero 画矩形(空心、实心、多个矩形、多层同心矩形、彩虹条矩形、条纹相间、随机颜色矩形、特殊效果、渐变效果)

用Pygame Zero 画矩形 &#xff08;空心、实心、多个矩形、多层同心矩形、彩虹条矩形、条纹相间、随机颜色矩形、特殊效果、渐变效果&#xff09; 本文目录&#xff1a; 零、时光宝盒 一、绘制空心矩形 二、绘制实心矩形 三、画多个静止矩形 四、绘制多层同心矩形 4.1、…

【Rust自学】11.9. 单元测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.9.1. 测试的分类 Rust把测试分为两类&#xff0c;一个是单元测试&#xff0c;一个是集成测试。 单元测试比较小也比较专注&#xff…

[java基础-集合篇]优先队列PriorityQueue结构与源码解析

优先队列PriorityQueue 优先级队列表示为平衡二进制堆&#xff1a; queue[n] 的两个子级是 queue[2*n1] 和 queue[2*&#xff08;n1&#xff09;]。 注&#xff1a;左子节点index2*parentIndex1,右子节点index2*parentIndex2,源码中计算parent位置时就是这样反过来计算的 优…

回归预测 | MATLAB实RVM-Adaboost相关向量机集成学习多输入单输出回归预测

回归预测 | MATLAB实RVM-Adaboost相关向量机集成学习多输入单输出回归预测 目录 回归预测 | MATLAB实RVM-Adaboost相关向量机集成学习多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 RVM-Adaboost相关向量机集成学习多输入单输出回归预测是一种先进…

Linux(Centos7)安装Mysql/Redis/MinIO

安装Mysql 安装Redis 搜索Redis最先版本所在的在线安装yum库 查看以上两个组件是否是开机自启 安装MinIO 开源的对象存储服务&#xff0c;存储非结构化数据&#xff0c;兼容亚马逊S3协议。 minio --help #查询命令帮助minio --server --help #查询--server帮助minio serve…

MySQL批量修改数据表编码及字符集为utf8mb4

​​​​​​MySQL批量修改数据表编码及字符集为utf8mb4 utf8mb4编码是utf8编码的超集&#xff0c;兼容utf8&#xff0c;并且能存储4字节的表情字符。 采用utf8mb4编码的好处是&#xff1a;存储与获取数据的时候&#xff0c;不用再考虑表情字符的编码与解码问题。 更改数据库…

Edge浏览器网页设置深色模式/暗模式

文章目录 需求分析1. 浏览器中的设置——外观——深色。2. 在Edge浏览器的地址栏如下网址&#xff1a;edge://flags/&#xff0c;直接搜索Dark则有内容弹出&#xff0c;将Default更改为Enable即可设置成功。3. 成果 需求 长期对着电脑屏幕&#xff0c;白色实在太刺眼&#xff…

TypeScript Jest 单元测试 搭建

NPM TypeScript 项目搭建 创建目录 mkdir mockprojectcd mockproject初始化NPM项目 npm init -y安装TypeScript npm i -D typescript使用VSCode 打开项目 创建TS配置文件tsconfig.json {"compilerOptions": {"target": "es5","module&…

基于FPGA的多功能数字钟设计

基于FPGA的多功能数字钟设计 前言基础知识按键数码管 系统概述按键使用说明模块描述模块设计button_debouncebutton_controllerclock_controllerdigital_tube 整体资源用量测试视频 前言 本工程主要是数码管、按键、LED的应用开发。 注&#xff1a;本工程所有IP均使用源码开发…

利用开源AI智能名片2+1链动模式S2B2C商城小程序拓展社交电商的深度实践探索

摘要&#xff1a;在数字化浪潮席卷全球的今天&#xff0c;社交电商作为一种新兴的商业模式&#xff0c;正以前所未有的速度改变着消费者的购物习惯与商家的营销策略。本文深入探讨了开源AI智能名片21链动模式S2B2C商城小程序在社交电商领域的应用&#xff0c;通过分析其核心机制…

【优选算法篇】:模拟算法的力量--解决复杂问题的新视角

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;优选算法篇–CSDN博客 文章目录 一.模拟算法二.例题1.替换所有的问号2.提莫攻击3.外观数列4…