Hadoop实战-part5

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Hadoop实战-part5

当replication 多时,Hadoop不会自己删;需要人工干预

相同配置的机器不同的存储空间,是否可以混搭?
为什么不能做?
副本存放策略;均等存放,会造成数据倾斜
木桶原理

数据倾斜?
服务器与服务器之间的存储相差比不超过20%(可自主设定,但建议20%)
危害
导致磁盘很容易坏;
计算瓶颈;
为什么会倾斜?
与reduce task 的个数有关
reduce的输出是按照 partition 来的;partition的分区策略很重要; 所以在分区前要分析数据;
partition sort 中的sort 是默认按照字典顺序排序的
如何调整
重新调整存储平衡: 使用命令 start-balancer.sh
参数:
什么时候触发;如20% ,存储容量可用量
start time
end time
为什么 start time = now 也不马上执行?
因为在不影响正常服务的情况下,才会执行。 如果内网流量上线???
随机取几台机器,判断是否发生倾斜
要马上执行,需要把没有倾斜的DN挂起;是倾斜的DN的命中率提高; Hadoop就会做副本提升。??
热门数据
需要任务介入,直接切;步骤不能错,一个都不能错,错了block就丢失
如何做百度
什么情况下只有map没有reduce?
在不做任何聚合操作的时候; 把 setReduceCounter()设置为0
part-m-000000
多个小文件时,需要启动JVM的复用机制
如何在map启动一部分后,立即启动Reduce?
上传时,修改Block的大小—>麻烦,替代方案 splitting
map 前后都有partition ; 前边的partion可以是后边的的整数倍;修改前边partition的大小,从而修改reduce的执行数
怎么修改partition? mapred-site.xml 里的 mapred.min.split.size
map 在运行20%时,默认启动reduce。但reduce只有在map到80%时,才开始干活。所以 20%—80%之间reduce是空闲的
在 2 代上,把 mapred-site.xml 有一个key值设置为1,可以在map达到100%是再启动reduce
磁盘阵列
冗余不做;如果运维工程师够格,就可以不做
特别在DN上不做
NN上可以做冗余

磁盘坏损
当磁盘支持热插拔;且不是OS盘时;损坏的磁盘可以直接拔
不能直接插入使用,需要format; 生成需要的目录

最小资源数
说的是内存
任务要运行需要:数据、CPU、内存, 更重要的是内存是否到位,决定任务是否可以执行
任务,当前机器资源不足,就把数据数据拷贝到有资源的机器上执行; 如果这种情况多,就会使得hadoop反映慢;
内存给多少? 有公式,看《hadoop技术内幕》
高配计算,低配存储
hadoop推测机制; 低配执行慢,推测机制,会在启动一台机器做同样的任务,哪个早完成,就以这台计算结果为准,其它执行这个任务的机器全部 Kill
执行 JOIN 操作时,要求把hadoop的推测机制关了;否则,会资源浪费

心跳中包含: 任务状态、资源使用情况、

虚拟化
指的是大数据领域下的虚拟化
虚拟化通常指虚拟化CPU、内存;在大数据领域只有CPU可以造假(虚拟化),内存不能。
为什么内存不能造假?
因为Swap会关闭; 造成虚拟不出内存
为什么CPU可以?
时间片到期,就会保存任务现场,执行任务切换
可以造多少合适?
1个物理核可以对应1个;最多2倍;不要4倍
因为过多会造成频繁的保存和还原现场;实际执行计算的时间太少
通常机器托管,给的是真的内存、磁盘(物理设备),但CPU是虚拟的,假的
在这里插入图片描述
Hadoop 1 代上
client发送任务到job,job管理task ,task初始化任务的执行环境
task 只运行2个map, 2个reduce;
所以,1代是运行在廉价的机器上
Hadoop 2代上
job ----> RM
Tsk —》NM; appmaster 执行 application, client 查询任务状态,直接有APP master 相应

combiner
在map端做一次reduce操作;但有限制,如计算平均值,因为在map端做了一次reduce 所以记录数会减少,导致计算出平均数比实际值大,所以,部分业务不能执行combiner
在这里插入图片描述
hadoop的压缩codec
lzo 需要单独安装; defalate \gzip \ bzip2 不需要安装
所有第三方都需要安装
piqe 压缩比高; 自带的;Spark上的SQL会用到

压缩应该注意
压缩本身是否支持切割;算法本身是否支持切割; 原始文件大小,存放在一个Block中;一个DN上
压缩比:
选择哪个压缩算法? 如果懒得找可以全部使用quique
应用程序的压缩优先级最高
应用程序
XML
配置文件
在这里插入图片描述
Job 调度器
hadoop 资源管理(slots)

资源划分,需要考虑: 调度算法、管理多少资源、谁能用、任务的等级。

FIFO 调度器
Fair调度器:公平调度器
Capacity 调度器:容量调度器
算法原理待扩展
在这里插入图片描述
Fair和Capacity 什么情况下优先级低的先执行?只要不争抢资源的情况下。

电商里面,查询时模糊查询,为什么速度回那么快?全文检索, ES, 数据放在内存?
按照分词,做index, 词库, 单机做不到(伦策), 所有转集群, Solr, 和ES

Solr和ES选哪个?
压力测试报告,项目上的。就很明显了,选择哪个

学完这些东西怎么用?-----> 架构
数据
主动
被动


爬虫:有专门工具局用专门的工具; 看爬什么数据,选择什么工具; 爬完就可以直接存储或做分析
Flume / Kafka ===> Storme / Spark Streaming ===> 入存储
Storm 处理完随时可以入存储
Spark Streaming
SQL:可以直接返回Web 服务或存储
AI:接入到模型或算法,必须是增量的,不能是全亮的。 还可以再接一个SQL或者AI
存储
HDFS
本地:其次,选择本地
RDB: 最差;在 跟事务有关的情况下选它
Hive:Hive SQL在高版本下 Spark SQL更快(因为Spark 的维护人员少)
HBase:能不上就不上; redis, Cassandra+kylin,kudu+Kylin, Kudu+impala ,做Join时最高到一亿级别; 超过是把 impala 踢掉
Cassandra:无中心节点
Kudu
ES / Solr:不能放在同一个集群内。为什么?他们都要资源抢占,如果资源出现问题,所有的服务会全挂掉。包括HBase和Spark也不可以。
MPP DB:同上
Kafka
Impala
Presto:京东在用; 面向PB和TB级别;与Spark SQL比, Prseto的速度快,要经过大量的优化才可以达到Presto的效果(成本高)
Redis:集群必须要上UPS;是否需要落磁盘,自己定
等等
如框架继续要CPU和内存,则不能部署到同一个集群内
查询
在哪里存就在哪里查
分析
数据挖掘
在这里插入图片描述
Hive
仓库:什么都可放,历史数据
可以自定义函数
没有专门的数据格式:字段的格式
在这里插入图片描述
为什么要MySQL或Orale铁环Derby? 解决单Session和元数据在任何时候都可以看到和可以被使用
在这里插入图片描述
Hive 不要使用2.1.1 因为它有缺陷

Hive 安装
给Hive创建一个单独的库
MySQL 建库和用户
mysql -uroot -p123456
create database hive1 default character set latin1; 存中文不会乱码?因为它里边存的是MetaData,里边没有中文; 为什么不用UTF-8? 数据写入的时候,会超出字段长度
create user ‘hive1’@’%’ identified by ‘hive1’;
grant all on hive1 to hive1; // 删除
grant all on hive1.* to hive1@‘localhost’ identified by ‘hive1’; // 远端登录的密码
flush privileges; /// 使其生效
mysql -uhive1 -phive1 //测试用户可以登录(即可用)

解压缩 hive: tar -zxvf apache-hive-2.3.3-bin.tar.gz
配置XML文件:hive-site.xml
规范操作下, /user/hive/warehouse 都是表; 在HDFS上
把MySQL 的 Jar 包拷贝到 Hive的 lib目录下
启动Hadoop: ./start-all.sh
schematool
./schematool -dbType mysql -initSchema
在这里插入图片描述
到现在Hive安装完成,但没有启动

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL 分布式计算 Hadoop
大数据行业部署实战1:Hadoop伪分布式部署
大数据行业部署实战1:Hadoop伪分布式部署
487 0
|
7月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
732 0
|
7月前
|
分布式计算 大数据 Scala
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
349 1
|
6月前
|
存储 分布式计算 Hadoop
Hadoop Distributed File System (HDFS): 概念、功能点及实战
【6月更文挑战第12天】Hadoop Distributed File System (HDFS) 是 Hadoop 生态系统中的核心组件之一。它设计用于在大规模集群环境中存储和管理海量数据,提供高吞吐量的数据访问和容错能力。
687 4
|
2月前
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
48 3
|
2月前
|
分布式计算 Java Hadoop
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
44 2
|
3月前
|
分布式计算 Hadoop Devops
Hadoop集群配置https实战案例
本文提供了一个实战案例,详细介绍了如何在Hadoop集群中配置HTTPS,包括生成私钥和证书文件、配置keystore和truststore、修改hdfs-site.xml和ssl-client.xml文件,以及重启Hadoop集群的步骤,并提供了一些常见问题的故障排除方法。
92 3
Hadoop集群配置https实战案例
|
3月前
|
分布式计算 监控 Hadoop
监控Hadoop集群实战篇
介绍了监控Hadoop集群的方法,包括监控Linux服务器、Hadoop指标、使用Ganglia监控Hadoop集群、Hadoop日志记录、通过Hadoop的Web UI进行监控以及其他Hadoop组件的监控,并提供了相关监控工具和资源的推荐阅读链接。
101 2
|
4月前
|
资源调度 分布式计算 监控
【揭秘Hadoop YARN背后的奥秘!】从零开始,带你深入了解YARN资源管理框架的核心架构与实战应用!
【8月更文挑战第24天】Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理器,为Hadoop集群上的应用提供统一的资源管理和调度框架。YARN通过ResourceManager、NodeManager和ApplicationMaster三大核心组件实现高效集群资源利用及多框架支持。本文剖析YARN架构及组件工作原理,并通过示例代码展示如何运行简单的MapReduce任务,帮助读者深入了解YARN机制及其在大数据处理中的应用价值。
103 0
|
7月前
|
分布式计算 数据可视化 Hadoop
大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现
大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现