hadoop生态圈集群搭建(持续更新240512)

Hadoop生态圈

  • Linux
    • 1.修改ip地址
    • 2.重启network服务
    • 3.安装插件
    • 4.关闭防火墙
    • 5.创建用户
    • 6.创建目录
    • 7.修改目录的所属主和所属组为lxy
    • 8.修改主机名:hadoop102 (注意名字后面不要加空格)
    • 9.修改hosts文件
    • 10.等插件都装完后再重启Linux
    • 11.把xshell的登录用户换成lxy (注意:不要用root切到lxy 而是直接使用lxy登录)
  • JDK安装(建议和Hadoop一起安装,改的文件都一样,一起改!)
    • 1.将jdk的压缩包上传到linux的/opt/software目录中
    • 2.解压
    • 3.配置环境变量
      • 3.1 在/etc/profile.d中创建xxx.sh(在这我们统一叫 my_env.sh)
      • 3.2 让环境变量生效
    • 4.测试
  • Hadoop安装
    • 1.将Hadoop的压缩包上传到linux的/opt/software
    • 2.解压压缩包
    • 3.配置环境变量
    • 4.让环境变量生效
    • 5.测试
  • 单机模式
    • 一 准备数据
    • 二 运行程序
    • 三 查看结果
  • 分布式集群搭建
    • 1.scp的使用
    • 2.rsync的使用
    • 3.ssh配置
      • 生成私钥和公钥
    • 4.xsync脚本的使用
    • 5.集群部署规划
    • 6.修改配置文件
      • 配置core-site.xml
      • 配置hdfs-site.xml
      • 配置yarn-site.xml
      • 配置mapred-site.xml
      • 配置workers
    • 7.格式化
    • 8.启动集群
      • 启动集群脚本
    • 9.常见错误:
    • 10.写jpsall脚本
    • 11.查看页面
      • ①浏览器中输入:http://hadoop102:9870
      • ①浏览器中输入:http://hadoop103:8088
    • 12.集群测试
  • 集群时间同步

Linux

在刚安装好的Linux上克隆一个hadoop102

在hadoop102上打快照 ----因为晚上需要恢复快照再做一遍

1.修改ip地址

vi /etc/sysconfig/network-scripts/ifcfg-ens33修改BOOTPROTO=staticONBOOT=yes
添加如下内容IPADDR=192.168.10.102GATEWAY=192.168.10.2DNS1=114.114.114.114DNS2=8.8.8.8

2.重启network服务

	systemctl restart network	
测试ping www.baidu.com(xshell连接Linux)

3.安装插件

yum install -y epel-release net-tools vim
yum install -y  psmisc  nc  rsync  lrzsz  ntp libzstd openssl-static tree iotop git
(可以在安装的过程中,再打开一个窗口继续下面的操作)

4.关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

5.创建用户

#创建用户
useradd lxy
#设置密码123321
passwd lxy 回车再输入密码 123321
#给lxy设置可以使用root权限
visudo
#在root    ALL=(ALL)       ALL下面添加如下内容
lxy ALL=(ALL)       NOPASSWD:ALL

6.创建目录

mkdir /opt/module
mkdir /opt/software

7.修改目录的所属主和所属组为lxy

chown lxy:lxy module software

8.修改主机名:hadoop102 (注意名字后面不要加空格)

vi /etc/hostname

9.修改hosts文件

#修改linux的hosts文件vi /etc/hosts添加如下内容

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108
192.168.10.112 hadoop112
192.168.10.113 hadoop113
192.168.10.114 hadoop114
192.168.10.115 hadoop115
192.168.10.116 hadoop116
192.168.10.117 hadoop117
192.168.10.118 hadoop118

#修改windows的hosts文件(如果修改保存时显示没有权限。可以将hosts文件复制到桌面修改桌面上的hosts文件再把桌面的hosts文件复制回去即可。查看是否成功)
C:\Windows\System32\drivers\etc

添加如下内容
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108
192.168.10.112 hadoop112
192.168.10.113 hadoop113
192.168.10.114 hadoop114
192.168.10.115 hadoop115
192.168.10.116 hadoop116
192.168.10.117 hadoop117
192.168.10.118 hadoop118

10.等插件都装完后再重启Linux

11.把xshell的登录用户换成lxy (注意:不要用root切到lxy 而是直接使用lxy登录)

JDK安装(建议和Hadoop一起安装,改的文件都一样,一起改!)

1.将jdk的压缩包上传到linux的/opt/software目录中

2.解压

cd /opt/software
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/module/

3.配置环境变量

3.1 在/etc/profile.d中创建xxx.sh(在这我们统一叫 my_env.sh)

cd /etc/profile.d
sudo vim my_env.sh

添加如下内容

#声明JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
#声明HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.4
#将JAVA_HOME添加到path中
export PATH=$PATH:$JAVA_HOME/bin
#将HADOOP_HOME添加到path中
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3.2 让环境变量生效

第一种方式 :将xshell的窗口断开重新连接 (重新加载环境变量)

第二种方式 :source /etc/profile.d/my_env.sh
注意:source就是执行my_env.sh脚本程序 如果第一次环境变量错误 修改后 再次source
会发现原来错误的环境变量还在。那就重启Linuxsudo reboot

4.测试

java -version
hadoop version

Hadoop安装

1.将Hadoop的压缩包上传到linux的/opt/software

2.解压压缩包

cd /opt/software
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/module/

3.配置环境变量

cd /etc/profile.d
sudo vim my_env.sh

添加如下内容

#声明HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.4
#将HADOOP_HOME添加到path中
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

4.让环境变量生效

第一种方式 :将xshell的窗口断开重新连接 (重新加载环境变量)

第二种方式 :source /etc/profile.d/my_env.sh
注意:source就是执行my_env.sh脚本程序 如果第一次环境变量错误 修改后 再次source
会发现原来错误的环境变量还在。那就重启sudo reboot

5.测试

hadoop version

单机模式

一 准备数据

1.创建目录

mkdir /opt/module/hadoop-3.3.4/wcinput

2.创建文件

cd /opt/module/hadoop-3.3.4/wcinput
vim a.txt

3.文件中写点数据

hello hello
longge
canglaoshi
longge

二 运行程序

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount wcinput wcoutput

说明:
hadoop: bin目录中的命令
jar : 参数表示运行一个jar包
share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar : jar包路径
wordcount :案例名称-不能随便写
wcinput :数据所在的目录
wcoutput :运算的结果输出的目录—该目录必须不存在

三 查看结果

cd wcoutput
cat part-r-00000

分布式集群搭建

1.scp的使用

进行文件或目录的拷贝

scp -r $pdir/$fname $user@$host:$pdir/$fname

2.rsync的使用

rsync -av $pdir/$fname $user@$host:$pdir/$fname

3.ssh配置

生成私钥和公钥

每个节点执行一次

ssh-keygen -t rsa

每个节点的rootlxy各执行一次

### 拷贝公钥
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

4.xsync脚本的使用

vim /home/lxy/bin/xsync
#!/bin/bash#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho ====================  $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!fidone
done

5.集群部署规划

  • NameNode和SecondaryNameNode不要安装在同一台服务器。
  • ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
hadoop102hadoop103hadoop104
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

6.修改配置文件

cd /opt/module/hadoop-3.3.4/etc/hadoop

修改了下面的5个配置文件
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
workers

配置core-site.xml

vim core-site.xml
<!-- 指定NameNode的地址 -->
<property><name>fs.defaultFS</name><value>hdfs://hadoop102:8020</value>
</property><!-- 指定hadoop数据的存储目录 -->
<property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.3.4/data</value>
</property><!-- 配置HDFS网页登录使用的静态用户为lxy -->
<property><name>hadoop.http.staticuser.user</name><value>lxy</value>
</property>

配置hdfs-site.xml

vim hdfs-site.xml

<!-- nn web端访问地址-->
<property><name>dfs.namenode.http-address</name><value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property><name>dfs.namenode.secondary.http-address</name><value>hadoop104:9868</value>
</property>

配置yarn-site.xml

vim yarn-site.xml

    <!-- 指定MR走shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname</name><value>hadoop103</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><!-- 开启日志聚集功能 -->
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property><!-- 设置日志聚集服务器地址 -->
<property>  <name>yarn.log.server.url</name>  <value>http://hadoop102:19888/jobhistory/logs</value>
</property><!-- 设置日志保留时间为7天 -->
<property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value>
</property>

配置mapred-site.xml

vim mapred-site.xml

<!-- 指定MapReduce程序运行在Yarn上 -->
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property><name>mapreduce.jobhistory.address</name><value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop102:19888</value>
</property>

配置workers

vim /opt/module/hadoop-3.3.4/etc/hadoop/workers

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

hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
同步所有节点配置文件。

一定要分发

cd /opt/module/hadoop-3.3.4/etc/hadoop
xsync ./
xsync /opt/module/hadoop-3.3.4/etc

7.格式化

在hadoop102(因为namenode在这个节点上-格式化后产生的文件是给namenode使用的)上格式化。
注意:不要重复格式化。如果是格式化失败(格式化的时候有错误)修改错误后重新格式化
命令:hdfs namenode -format

8.启动集群

启动HDFS:start-dfs.sh
关闭HDFSstop-dfs.sh启动YARN(必须在resourcemanager所在的节点-hadoop103):start-yarn.sh
关闭YARN(必须在resourcemanager所在的节点-hadoop103):stop-yarn.sh

启动集群脚本

vim /home/lxy/bin/myhadoop
#!/bin/bash
#参数的个数校验
if [ $# -ne 1 ];thenecho 参数的个数不对exit
fi#参数的内容校验
case $1 in
"start")#启动HDFSssh hadoop102 $HADOOP_HOME/sbin/start-dfs.sh#启动YARNssh hadoop103 start-yarn.sh;;
"stop")#关闭HDFSssh hadoop102 stop-dfs.sh#关闭YARNssh hadoop103 stop-yarn.sh;;
*)echo 输入的内容不对!!!;;
esac;

9.常见错误:

错误一:配置文件错误
错误二:重复格式化

10.写jpsall脚本

11.查看页面

Web端查看HDFS的NameNode

①浏览器中输入:http://hadoop102:9870

	②查看HDFS上存储的数据信息
Web端查看YARN的ResourceManager

①浏览器中输入:http://hadoop103:8088

	②查看YARN上运行的Job信息如果看不到解决方案:1.查看集群是否正启动(HDFS YARN都要启动)2.将hadoop102的名字替换成IP地址(如果能解决说明windows的hosts的文件有问题)3.查看防火墙是否关闭systemctl status firewalld如果没有关闭 :systemctl stop firewalld  systemctl disable firewalld

12.集群测试

①在HDFS的页面上创建input目录 并在input目录中上传a.txt
②在任意一台节点上执行jobhadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /input /output注意:输入和输出路径是HDFS的路径
③在运行时观察两个页面http://hadoop103:8088 观察Job执行的进度http://hadoop102:9870 观察输出结果

13.历史服务器
作用:查看之前执行过的job信息
配置:vim /opt/module/hadoop-3.3.4/etc/hadoop/mapred-site.xml
添加如下内容

		<!-- 历史服务器端地址 --><property><name>mapreduce.jobhistory.address</name><value>hadoop102:10020</value></property><!-- 历史服务器web端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop102:19888</value></property>
注意:一定要分发   
cd /opt/module/hadoop-3.3.4/etc/hadoop/
xsync mapred-site.xml
启动历史服务器:
mapred --daemon start historyserver
历史服务器地址http://hadoop102:19888

14.日志的聚集
作用:在历史服务器中通过logs就可以查看job的执行的详细信息
配置:vim /opt/module/hadoop-3.3.4/etc/hadoop/yarn-site.xml
添加如下内容

		<!-- 开启日志聚集功能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 设置日志聚集服务器地址 --><property>  <name>yarn.log.server.url</name>  <value>http://hadoop102:19888/jobhistory/logs</value></property><!-- 设置日志保留时间为7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
注意:①一定要分发 cd /opt/module/hadoop-3.3.4/etc/hadoop/xsync yarn-site.xml②重启HDFS YARN 历史服务器③重新执行job④再查看logs

15.集群启动方式
方式一 :整个模块的启或停止
start-dfs.sh stop-dfs.sh
start-yarn.sh stop-yarn.sh
方式二: 单个角色的启动或停止
(1)分别启动/停止HDFS组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
(2)启动/停止YARN
yarn --daemon start/stop resourcemanager/nodemanager

集群时间同步

将hadoop102配置成时间服务器
1.将ntpd服务关闭
sudo systemctl stop ntpd

2.修改配置文件sudo vim /etc/ntp.confsudo vim /etc/sysconfig/ntpd3.启动ntpd服务sudo systemctl start ntpd=======时间服务器的时间不对===================sudo systemctl stop ntpd
sudo ntpdate 时间服务器地址
sudo systemctl start ntpd

配置hadoop103和hadoop104去hadoop102同步时间
1.启动定时任务的服务
sudo systemctl start crond

2.编辑定时任务sudo crontab -e添加如下内容0 2 * * * sudo ntpdate hadoop102

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

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

相关文章

【TC3xx芯片】TC3xx芯片时钟监控

目录 前言 正文 1.时钟监控概念 1.1 时钟监控原理 1.2时钟监控配置寄存器

Node.js 的补充适用场景

Node.js 的适用场景相当广泛&#xff0c;以下再补充一些具体的使用场景&#xff1a; 服务器端应用开发&#xff1a; Node.js特别适合于构建高性能、高并发、低延迟的服务器端程序。它可以用来开发Web服务器、API服务器、实时通讯服务器等。Node.js的高性能和事件驱动的非阻塞I…

day09-常用API异常

1.时间日期类 1.1 Date类&#xff08;应用&#xff09; 计算机中时间原点 1970年1月1日 00:00:00 时间换算单位 1秒 1000毫秒 Date类概述 Date 代表了一个特定的时间&#xff0c;精确到毫秒 Date类构造方法 方法名说明public Date()分配一个 Date对象&#xff0c;并初始化…

【大数据】HDFS

文章目录 [toc]HDFS 1.0NameNode维护文件系统命名空间存储元数据解决NameNode单点问题 SecondaryNameNode机架感知数据完整性校验校验和数据块检测程序DataBlockScanner HDFS写流程HDFS读流程HDFS与MapReduce本地模式Block大小 HDFS 2.0NameNode HANameNode FederationHDFS Sna…

使用注解的方式进行配置RabbitMQ

引入依赖&#xff1a; <dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit-test</artifactId><scope>test</scope></dependency> 配置application.yml server:port: 8082 spring:rabbitmq…

pyqt5报错:AttributeError: ‘mywindow‘ object has no attribute ‘setCentralWidget‘

第一种解决方法是&#xff1a;AttributeError: ‘mywindow‘ object has no attribute ‘setCentralWidget‘_attributeerror: mywindow object has no attribute-CSDN博客 第二种解决方法是&#xff08;推荐&#xff09;&#xff1a; 直接把这段代码复制在 ui转 py文件的后面…

什么是JVM中的程序计数器

在计算机的体系结构中&#xff1a; 程序计数器&#xff08;Program Counter&#xff09;&#xff0c;通常缩写为 PC&#xff0c;是计算机体系结构中的一个寄存器&#xff0c;用于存储下一条指令的地址。程序计数器是控制单元的一部分&#xff0c;它的作用是确保程序能够按正确…

用 Python 和 AkShare 进行个股数据清洗:简易多功能方法

标题:用 Python 和 AkShare 进行个股数据清洗:简易多功能方法 简介: 本文介绍了如何使用 Python 和 AkShare 库对个股数据进行清洗和处理。个股数据经常需要进行清洗以用于分析、建模或可视化。我们将介绍一些简单但功能强大的方法,包括数据加载、缺失值处理、重复值检测和…

心理应用工具包 psychtoolbox 绘制小球走迷宫

psychtoolbox 是 MATLAB 中的一个工具包&#xff0c;对于科研人员设计实验范式来说是不二之选&#xff0c;因为它可以操作计算机的底层硬件&#xff0c;精度可以达到帧的级别。 文章目录 一、实验目的二、psychtoolbox 的下载安装三、Psychtoolbox 的基本使用四、完整代码 一、…

不同数据类型的内部秘密----编程内幕(2)

Q&#xff1a; char类型是如何被当成int处理的&#xff1f; A: 我们可以看看char类型变量在何时才会被当做int处理. #include <stdio.h>int main() {char ch;ch a;printf("%c\n", ch);return 0; } 汇编代码如下&#xff1a; hellomain:0x100000f60 <0&…

修改了环境变量~/.bashrc后 报错 命令 “dirname” 可在以下位置找到 * /bin/dirname * /usr/bin/dirname

问题如下&#xff1a; 修改了~/.bashrc后加入了环境变量之后报错&#xff0c;如下所示 (base) jiedell:~/桌面$ source ~/.bashrc 命令 “dirname” 可在以下位置找到 * /bin/dirname * /usr/bin/dirname 由于 /usr/bin:/bin 不在 PATH 环境变量中&#xff0c;故无法找到该…

在Linux上安装并启动Redis

目录 安装gcc环境 上传redis文件方法一&#xff1a;sftp 上传redis文件方法二&#xff1a;wget 启动redis-server ctrlc关闭redis-server 参考文章&#xff1a;Linux 安装 Redis 及踩坑 - 敲代码的阿磊 - 博客园 (cnblogs.com) 准备&#xff1a;打开VMware Workstation&am…

pair对组创建

创建方式1: pair<type,type> p(value1,value2); pair<string, int> p("Tom", 20); cout << "name:" << p.first << "age:" << p.second << endl; 创建方式2: pair<type,type> pmake_pair(v…

mysql权限分类

USAGE --无权限,只有登录数据库,只可以使用test或test_*数据库 ALL --所有权限 select/update/delete/super/slave/reload --指定的权限 with grant option --允许把自己的权限授予其它用户(此用户拥有建立账号的权限) 权限级别&#xff1a; 1、. &#xff0d;&#xff0d;全…

C语法:for循环执行顺序

今天下编写代码时遇到了如下情况&#xff1a;期望是输出 i1,j2 i1,j3 i1,j4 i2,j3 int main(void) {int i,j;for(i1;i<3;i){for(j1;j!i&&j<4;j){printf("i%d,j%d\n",i,j);}}return 0; }实际输出结果&#xff1a; i2,j1 分析上述代码&#xff1a…

商务分析方法与工具(九):Python的趣味快捷-Pandas处理公司财务数据集思路

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

LangChain:大模型框架的深度解析与应用探索

在数字化的时代浪潮中&#xff0c;人工智能技术正以前所未有的速度蓬勃发展&#xff0c;而大模型作为其中的翘楚&#xff0c;以生成式对话技术逐渐成为推动行业乃至整个社会进步的核心力量。再往近一点来说&#xff0c;在公司&#xff0c;不少产品都戴上了人工智能的帽子&#…

初识C语言——第十八天

循环while/do while while 语法结构 while(表达式) 循环语句; break:在while循环中&#xff0c;break用于永久的终止循环 continue:在while循环中&#xff0c;continue的作用是跳过本次循环continue后面的代码 直接去判断部分&#xff0c;看是否进行下一次循环。 注意事项…

Logstash详解

Logstash详解&#xff1a;构建强大日志收集与处理管道的利器 一、引言 在大数据和云计算的时代&#xff0c;日志数据作为企业运营和故障排查的重要依据&#xff0c;其收集、处理和分析能力显得尤为重要。Logstash&#xff0c;作为一款强大的日志收集、处理和转发工具&#xf…

[AI OpenAI-doc] 安全最佳实践

使用我们的免费 Moderation API OpenAI 的 Moderation API 是免费使用的&#xff0c;可以帮助减少您完成中不安全内容的频率。或者&#xff0c;您可能希望开发自己的内容过滤系统&#xff0c;以适应您的使用情况。 对抗性测试 我们建议对您的应用进行“红队测试”&#xff0…