1.2 Hadoop

news/2024/5/20 2:31:57 标签: hadoop, hdfs, big data

1.2 Hadoop
1.2.1 Hadoop常用端口号
hadoop2.x Hadoop3.x
访问HDFS端口 50070 9870
访问MR执行情况端口 8088 8088
历史服务器 19888 19888
客户端访问集群端口 9000 8020
1.2.2 Hadoop配置文件
配置文件:
hadoop2.x core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml slaves
hadoop3.x core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml workers
1.2.3 HDFS读流程和写流程

1.2.4 HDFS小文件处理
1)会有什么影响
(1)存储层面:
1个文件块,占用namenode多大内存150字节
128G能存储多少文件块? 128 g* 1024m1024kb1024byte/150字节 = 9.1亿文件块
(2)计算层面:
每个小文件都会起到一个MapTask,1个MapTask默认内存1G。浪费资源。
2)怎么解决
(1)采用har归档方式,将小文件归档
(2)采用CombineTextInputFormat
(3)有小文件场景开启JVM重用;如果没有小文件,不要开启JVM重用,因为会一直占用使用到的task卡槽,直到任务完成才释放。
JVM重用可以使得JVM实例在同一个job中重新使用N次,N的值可以在Hadoop的mapred-site.xml文件中进行配置。通常在10-20之间

mapreduce.job.jvm.numtasks
10
How many tasks to run per jvm,if set to -1 ,there is no limit

1.2.5 HDFS的NameNode内存
1)Hadoop2.x系列,配置NameNode默认2000m
2)Hadoop3.x系列,配置NameNode内存是动态分配的
NameNode内存最小值1G,每增加100万个block,增加1G内存。
1.2.6 NameNode心跳并发配置

企业经验:dfs.namenode.handler.count=20×〖log〗_e^(Cluster Size),比如集群规模(DataNode台数)为3台时,此参数设置为21。可通过简单的python代码计算该值,代码如下。
1.2.7 纠删码原理
CPU资源换取存储空间。

1.2.8 异构存储(冷热数据分离)
期望经常使用的数据存储在固态硬盘或者内存镜像硬盘;不经常使用的历史数据存储在老旧的破旧硬盘。

1.2.9 Shuffle及优化
1、Shuffle过程

1.2.10 Yarn工作机制

1.2.11 Yarn调度器
1)Hadoop调度器重要分为三类:
FIFO 、Capacity Scheduler(容量调度器)和Fair Sceduler(公平调度器)。
Apache默认的资源调度器是容量调度器;
CDH默认的资源调度器是公平调度器。
2)区别:
FIFO调度器:支持单队列 、先进先出 生产环境不会用。
容量调度器:支持多队列。队列资源分配,优先选择资源占用率最低的队列分配资源;作业资源分配,按照作业的优先级和提交时间顺序分配资源;容器资源分配,本地原则(同一节点/同一机架/不同节点不同机架)
公平调度器:支持多队列,保证每个任务公平享有队列资源。资源不够时可以按照缺额分配。
3)在生产环境下怎么选择?
大厂:如果对并发度要求比较高,选择公平,要求服务器性能必须OK;
中小公司,集群服务器资源不太充裕选择容量。
4)在生产环境怎么创建队列?
(1)调度器默认就1个default队列,不能满足生产要求。
(2)按照框架:hive /spark/ flink 每个框架的任务放入指定的队列(企业用的不是特别多)
(3)按照部门:业务部门1、业务部门2
(4)按照业务模块:登录注册、购物车、下单
5)创建多队列的好处?
(1)因为担心员工不小心,写递归死循环代码,把所有资源全部耗尽。
(2)实现任务的降级使用,特殊时期保证重要的任务队列资源充足。
业务部门1(重要)=》业务部门2(比较重要)=》下单(一般)=》购物车(一般)=》登录注册(次要)
1.2.12 项目经验之基准测试
硬盘的读写速度和网络带宽影响集群吞吐量的两个核心因素。
1.2.13 Hadoop宕机
1)如果MR造成系统宕机。此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存。调整参数:yarn.scheduler.maximum-allocation-mb(单个任务可申请的最多物理内存量,默认是8192MB)
2)如果写入文件过快造成NameNode宕机。那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。例如,可以调整Flume每批次拉取数据量的大小参数batchsize。
1.2.14 Hadoop解决数据倾斜方法
1)提前在map进行combine,减少传输的数据量
在Mapper加上combiner相当于提前进行reduce,即把一个Mapper中的相同key进行了聚合,减少shuffle过程中传输的数据量,以及Reducer端的计算量。
如果导致数据倾斜的key大量分布在不同的mapper的时候,这种方法就不是很有效了。
2)导致数据倾斜的key 大量分布在不同的mapper
(1)局部聚合加全局聚合。
第一次在map阶段对那些导致了数据倾斜的key 加上1到n的随机前缀,这样本来相同的key 也会被分到多个Reducer中进行局部聚合,数量就会大大降低。
第二次mapreduce,去掉key的随机前缀,进行全局聚合。
思想:二次mr,第一次将key随机散列到不同reducer进行处理达到负载均衡目的。第二次再根据去掉key的随机前缀,按原key进行reduce处理。
这个方法进行两次mapreduce,性能稍差。
(2)增加Reducer,提升并行度
JobConf.setNumReduceTasks(int)
(3)实现自定义分区
根据数据分布情况,自定义散列函数,将key均匀分配到不同Reducer


http://www.niftyadmin.cn/n/591151.html

相关文章

@property 的本质

property (nonatomic, retain) NSString *name;synthesize name;这种方式的本质是:-(NSString *) name{return name;}-(void) setName:(NSStrng *) newName{if(name!newName){[name release];name[newName retain];}} 对setName方法的解释:(1…

Android系统内存不足时,组建回收顺序问题

Android系统内存不足时 , 就需要把旧的或不需要用的应用 程序 移除. 如同之前的 Activity 生命 周期 所介绍, 这个移除的决定是由应用 程序 所处的状态来判断. 一般来说,当需要移除应用 程序 时, 系统将会做排序 , 然后从最不重要的开始移除 , 以下是移除时的…

xcode4 配置离线帮助文档

工欲善其事,必先利其器。iOS Library 是在线文档,查看API很不方便,所以需要配置离线帮助文档。 1.下载iOSLibrary.xar 打开浏览器,输入 https://developer.apple.com/rss/com.apple.adc.documentation.AppleiPhone5_0.atom &…

微服务基础架构的5个关键问题

作者介绍:杨波,微服务技术专家,曾主导了拍拍贷微服务架构体系建设。任职携程技术研发总监期间,主导了携程大规模SOP体系建设,也是极客时间「微服务架构实战160讲」课程讲师。一、OAuth2的四种模式该如何选择&#xff1…

获取GITHUB的连接地址

https://github.com.ipaddress.com/#ipinfo

国内各大互联网公司相关技术站点-不完全收录

利用闲暇时间整理了一份国内各大互联网公司的相关技术站点,希望能够对大家有所帮助,也欢迎各位帮忙补充。 腾讯系列(10) 淘宝系列(8) 阿里巴巴系列(3) 支付宝系列(3&…

eclipse里面执行的程序添加JVM的参数

2019独角兽企业重金招聘Python工程师标准>>> eclipse有启动参数里设置jvm大小,因为eclipse运行时自己也需要jvm,所以eclipse.ini里设置的jvm大小不是具体某个程序运行时所用jvm的大小,这和具体程序运行的jvm大小无关。 那么怎么才能设置某个程…

浅谈Javascript中的事件流和事件绑定

事件流 浏览器中的事件流意味着页面上可有不仅一个,甚至多个元素响应同一个事件。而这一个或多个元素响应事件发生的先后顺序在各个浏览器(主要针对IE和Netscape)上是不同的。 冒泡型事件(Dubbed Bubbling) IE上的…