Hadoop3.x学习教程(二)
Hadoop3.x学习教程(二)
- 1.完全分布式运行模式(开发重点)
- 1.1、编写集群分发脚本
- 1.2、SSH免密登陆配置
- 1.3、集群配置
- 1.4、群起集群
1.完全分布式运行模式(开发重点)
1.1、编写集群分发脚本
1.xsync集群分发脚本
#1.需要在声明系统变量/home/hadoop/bin
#2.在/home/hadoop/bin目录下创建xsync文件
#3.用户为hadoop
#进入hadoop用户文件夹
cd /home/hadoop
#创建bin目录
mkdir bin
#进入bin目录
cd bin
#创建文件xsync
vim xsync#代码如下
#==============================
#!/bin/bash#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍历集群所有机器
for host in hadoop100 hadoop101 hadoop102
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
2.修改脚本xsync权限,并测试
[hadoop@hadoop100 bin]$ chmod +x xsync
3.将脚本复制到/bin中,以便全局调用并且同步环境变量配置(root)
[hadoop@hadoop100 bin]$ sudo cp xsync /bin/
sudo /home/hadoop/bin/xsync /etc/profile.d/my_env.sh#分发完成后对机器进行更新环境变量
source /etc/profile
1.2、SSH免密登陆配置
1.SSH语法
#执行这段代码之前一定要配置好hosts文件
ssh hadoop101#配置正确会出现如下内容
Are you sure you want to continue connecting (yes/no)?
#输入yes
#退出为exit
2.免密原理
ssh-key-gen生成密钥对,将A公钥拷贝到要免密登陆的机器B上,ssh访问B(数据用私钥A加密),党B接收到数据后,去授权key中查找A的公钥并解密数据,采用A公钥加密的数据返回给A,接收到数据后用A的私钥揭秘数据
3.操作代码
#进入ssh目录
cd ~
cd .ssh
ssh-keygen -t rsa
#执行完成后敲三下回车就会生成两个文件id_rsa(私钥),id_rsa.pub(公钥)
ssh-copy-id hadoop100
ssh-copy-id hadoop101
ssh-copy-id hadoop102
#本台机器配置完成后其余机器也需要重复相同操作,注意用户为hadoop
4…ssh文件夹下(~/.ssh)的文件功能解释
文件名 | 解释 |
---|---|
know_hosts | 记录ssh访问过的计算机公钥(public key) |
id_rsa | 生成的私钥 |
id_rsa.pub | 生成的公钥 |
anthorized_keys | 存放授权过的无密登陆服务器公钥 |
1.3、集群配置
1.集群部署规划
NameNode和SecondaryNameNode不要安装在同一台服务器
ResourceManager很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上
hadoop100 | hadoop101 | hadoop102 | |
---|---|---|---|
HDFS | NameNode DataNode | DateNode | SecondaryNameNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
2.配置文件说明
Hadoop配置文件分两类,默认配置文件和自定义配置文件,只有用户想修改某一配置值时才需要修改自定义配置文件,更改相应属性值
默认配置文件
要获取的默认文件 | 文件存放在Hadoop的jar包中的位置 |
---|---|
[core-default.xml] | hadoop-common-3.1.3.jar/core-default.xml |
[hdfs-defaule.xml] | hadoop-hdfs-3.1.3.jar/hdfs-default.xml |
[yarn-default.xml] | hadoop-yarn-common-3.1.3.jar/yarn-default.xml |
[mapred-default.xml] | hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml |
自定义配置文件
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
3.配置集群
- 核心配置文件
配置core-site.xml
#进入hadoop目录
[hadoop@hadoop100 ~]$ cd $HADOOP_HOME/etc/hadoop
#修改core-site.xml
[hadoop@hadoop100 hadoop]$ vim 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://hadoop100:8020</value></property><!-- 指定hadoop数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.1.3/data</value></property><!-- 配置HDFS网页登录使用的静态用户为hadoop --><property><name>hadoop.http.staticuser.user</name><value>hadoop</value></property>
</configuration>
- HDFS配置文件
配置hdfs-site.xml
[hadoop@hadoop100 hadoop]$ vim 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>hadoop101:9870</value></property><!-- 2nn web端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>hadoop102:9868</value></property>
</configuration>
- YARN配置文件
配置yarn-site.xml
[hadoop@hadoop100 hadoop]$ vim 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>hadoop102</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>
- MapReduce配置文件
配置mapred-site.xml
[hadoop@hadoop100 hadoop]$ vim 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>
4.在集群上分发配置好的Hadoop配置文件
[hadoop@hadoop100 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/
1.4、群起集群
1.配置workers
[hadoop@hadoop100 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
#添加的内容如下
hadoop100
hadoop101
hadoop102
#添加完成后同步所有节点配置
[hadoop@hadoop100 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc
2.启动集群
第一次启动需要在nn节点格式化NameNode
#初始化namenode
[hadoop@hadoop100 hadoop-3.1.3]$ hdfs namenode -format
#启动hdfs
[hadoop@hadoop100 hadoop-3.1.3]$ sbin/start-dfs.sh
#在配置了ResourceManager的节点(hadoop101)启动YARN
[hadoop@hadoop101 hadoop-3.1.3]$ sbin/start-yarn.sh
#Web端查看HDFS的NameNode
http://hadoop100:9870
#Web端查看YARN的ResourceManager
浏览器中输入:http://hadoop101:8088
3.集群基本测试
1)上传文件到集群
#创建INPUT
hadoop fs -mkdir /input#创建文件
hadoop fs -put /路径/文件 /input#大文件
hadoop fs -put /路径/文件 #文件存放位置
/{HADOOP_HOME}data/dfs/data/current/
2)拼接文件
cat 文件>>要拼接的文件名
4.配置历史服务器
#配置mapred-site.xml
[hadoop@hadoop100 hadoop]$ vim mapred-site.xml
<!-- 历史服务器端地址 -->
<property><name>mapreduce.jobhistory.address</name><value>hadoop100:10020</value>
</property><!-- 历史服务器web端地址 -->
<property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop100:19888</value>
</property>#分发
xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml#启动历史服务器
mapred --daemon start historyserver#查看是否启动历史服务器
jps
http://hadoop100:19888/jobhistory
5.配置日志聚集
#配置yarn-site.xml
[hadoop@hadoop100 hadoop]$ vim yarn-site.xml
<!-- 开启日志聚集功能 -->
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property> <name>yarn.log.server.url</name> <value>http://hadoop100:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value>
</property>#分发
xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml#重新启动NodeManager 、ResourceManager和HistoryServer
#关闭
sbin/stop-yarn.sh
mapred --daemon stop historyserver
#启动
start-yarn.sh
mapred --daemon start historyserver#查看历史服务器
http://hadoop100:19888/jobhistory
6.群体启动集群(需配置完成SSH)
#单体启动HDFS
start-dfs.sh/stop-dfs.sh
#单体启动YARN
start-yarn.sh/stop-yarn.sh#分别启动/停止HDFS组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
#启动/停止YARN
yarn --daemon start/stop resourcemanager/nodemanager
7.Hadoop集群常用脚本
cd /home/hadoop/bin
vim myhadoop.sh
#!/bin/bashif [ $# -lt 1 ]
thenecho "No Args Input..."exit ;
ficase $1 in
"start")echo " =================== 启动 hadoop集群 ==================="echo " --------------- 启动 hdfs ---------------"ssh hadoop100 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"echo " --------------- 启动 yarn ---------------"ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"echo " --------------- 启动 historyserver ---------------"ssh hadoop100 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")echo " =================== 关闭 hadoop集群 ==================="echo " --------------- 关闭 historyserver ---------------"ssh hadoop100 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"echo " --------------- 关闭 yarn ---------------"ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"echo " --------------- 关闭 hdfs ---------------"ssh hadoop100 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)echo "Input Args Error..."
;;
esac#保存退出
#赋予脚本使用权限
chmod +x myhadoop.sh#查看集群进程脚本
cd /home/hadoop/bin
vim jpsall
#!/bin/bashfor host in hadoop100 hadoop101 hadoop102
doecho =============== $host ===============ssh $host jps
done#保存退出
#赋予权限
chmod +x jpsall#分发
xsync /home/hadoop/bin/
8.常用端口
端口名称 | Hadoop2.x | hadoop3.x |
---|---|---|
NameNode内部通信端口 | 8020/9000 | 8020/9000/9820 |
NameNode HTTP UI | 50070 | 9870 |
MapReduce查看执行任务端口 | 8088 | 8088 |
历史服务器通信端口 | 19888 | 19888 |
9.集群时间同步
如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;
如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。
#查看所有节点ntpd服务状态(root用户)
sudo systemctl status ntpd
sudo systemctl start ntpd
sudo systemctl is-enabled ntpd
#修改主服务器的ntp.conf配置文件
sudo vim /etc/ntp.conf
#修改1(授权192.168.10.0-192.168.10.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
#修改2(集群在局域网中,不使用其他互联网上的时间)
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10#修改/etc/sysconfig/ntpd 文件
sudo vim /etc/sysconfig/ntpd
#增加(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes#重新启动ntpd服务
sudo systemctl start ntpd
#设置ntpd服务开机启动
sudo systemctl enable ntpd#在其他机器上配置
sudo systemctl stop ntpd
sudo systemctl disable ntpd#在其他机器上配置每一分钟与主服务器同步时间
sudo crontab -e
*/1 * * * * /usr/sbin/ntpdate 主服务器名
Hadoop3.x学习教程(二)相关推荐
- 大数据基石-Hadoop3.x学习教程-大数据场景介绍
大数据基石-Hadoop Hadoop3.x版本全系列教程 === 楼兰 === 文章目录 一.理解大数据 1.大数据的特点 2.大数据的应用方向 3.大数据的工作前景 二.大数据课程体系介绍 1.大 ...
- 大数据基石-Hadoop3.x学习教程-Hadoop产品了解与快速上手
大数据基石-Hadoop Hadoop3.x版本全系列教程 === 楼兰 === 文章目录 一.关于Hadoop 1.关于Hadoop产品 2.Hadoop课程内容 3.Hadoop的主要组件 二.H ...
- GIS开源库GEOS库学习教程(二):geos中的几何图形(Geometry)
前言 上一节我们学过了GEOS库的介绍和环境编译及示例代码,在这一节我们将了解一下geos中的各种几何图形类,它们大部分都是从Geometry类派生的.而几何图形(Geometry)是geos里面 ...
- mysql详细学习教程(二)
目录 把查询结果去除重复记录[distinct] 连接查询 什么是连接查询 连接查询的分类 当两张表进行连接查询时,没有任何条件的限制会发生什么现象? 怎么避免笛卡尔积现象 内连接之等值连接 内连接之 ...
- jQuery学习教程二十: jQuery 遍历 - 后代
后代是子.孙.曾孙等等. 通过 jQuery,您能够向下遍历 DOM 树,以查找元素的后代. 向下遍历 DOM 树 下面是两个用于向下遍历 DOM 树的 jQuery 方法: children() f ...
- 超详细的 MySQL 学习教程二(多实例、附练习、视频讲解持续更新)
目录 一.表记录的检索(单表) 1.1 基本查询语句 1.2 单表查询 一.表记录的检索(单表) 1.1 基本查询语句 SELECT 语句是最常用的查询语句,它的使用方式有些复杂,但功能是相当强大的. ...
- oTree学习教程(二)Models
Models models.py 是您定义应用程序数据模型的位置: Subsession Group Player Player是Group的一部分,这是Subsession的一部分.请参阅概念概述. ...
- akka学习教程(十四) akka分布式实战
akka系列文章目录 akka学习教程(十四) akka分布式实战 akka学习教程(十三) akka分布式 akka学习教程(十二) Spring与Akka的集成 akka学习教程(十一) akka ...
- GAN学习教程 (一)
Generative Adversarial Network 1 本文不会详细讲解GAN,第一次的学习只会站在一个大的概念上进行大致的探索. 一. 概述 GAN(generative adversar ...
最新文章
- R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域)、ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节
- CM5.11与CDH5.11安装使用说明
- *迭代 分支回收、创建偷懒脚本
- Github Pages 搭建网站
- LeetCode 1562. 查找大小为 M 的最新分组
- C/C++ 指针数组、二维数组
- 程序员:凭什么他大专12K,而我硕士研究生才5K?
- CocosCreator发布web-desktop获取本地资源
- cocos2d-x中使用plist文件总结
- 计算机科学工程哲学学位,2020年剑桥大学硕士读多久
- 转:组态软件测评∣WinCC、Citect、LabVIEW、InTouch、Ingnition,你更喜欢用哪个?
- android 阿里hotfix,Android 热修复方案--阿里百川HotFix
- STM32【H7】理论——综述、HAL库简述
- AutoLeaders控制组——51单片机学习笔记(AD/DA、红外遥控)
- 当幻想的小说来到现实——基于stable diffusion的小说插画生成
- gensim简单使用
- Tensorflow用SVM(高斯核函数)分类非线性数据
- 5.18 优先队列(堆) 滑动窗口(二) 交换链表的节点
- 基于人本理念的绩效管理体系设计(一)
- 为什么要进行个人知识管理(PKM)
热门文章
- 互联网无插件直播流媒体服务器方案EasyNVR下载新的软件执行程序,出现“invalid license”字样是什么意思?
- TL437x-EVM评估板测试手册(2)
- 2017年携程旅游校招Java研发笔试编程题(3个)
- 离散:常用排列组合模型归纳,DFS代码实现
- FPGA 视频处理中外部SDRAM的作用
- 华为p40会不会有鸿蒙系统,华为p40是不是鸿蒙系统
- VS code更改背景图片和颜色
- Activiti7框架学习
- 三菱PLC控制东芝4轴机器人程序,有完整的PLC程序带注释
- fastadmin需要php,fastadmin修改后台入口提示 模块不存在:admin.php