![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hadoop
文章平均质量分 67
Hadoop
SuperQiu~
这个作者很懒,什么都没留下…
展开
-
Hadoop HA 高可用
Hadoop HA 高可用1、HA 概述(1)所谓 HA(High Availablity),即高可用(7*24 小时不中断服务)。(2)实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA机制:HDFS 的 HA 和 YARN 的 HA。(3)NameNode 主要在以下两个方面影响 HDFS 集群➢ NameNode 机器发生意外,如宕机,集群将无法使用,直到管理员重启➢ NameNode 机器需要升级,包括软件、硬件升级,此时集群也将无法使用HDFS HA 功能原创 2021-12-08 10:04:10 · 669 阅读 · 0 评论 -
生产调优Hadoop综合调优
生产调优Hadoop综合调优Hadoop 小文件优化方法Hadoop 小文件弊端HDFS 上每个文件都要在 NameNode 上创建对应的元数据,这个元数据的大小约为150byte,这样当小文件比较多的时候,就会产生很多的元数据文件,一方面会大量占用NameNode 的内存空间,另一方面就是元数据文件过多,使得寻址索引速度变慢。小文件过多,在进行 MR 计算时,会生成过多切片,需要启动过多的 MapTask。每个MapTask 处理的数据量小,导致 MapTask 的处理时间比启动时间还小,白白消耗原创 2021-12-06 16:49:11 · 867 阅读 · 0 评论 -
生产调优Yarn 生产经验
生产调优Yarn 生产经验常用的调优参数1)调优参数列表(1)Resourcemanager 相关yarn.resourcemanager.scheduler.client.thread-count ResourceManager 处理调度器请求的线程数量yarn.resourcemanager.scheduler.class 配置调度器(2)Nodemanager 相关yarn.nodemanager.resource.memory-mb NodeManager 使用内存数yarn.nod原创 2021-12-06 16:32:15 · 463 阅读 · 0 评论 -
生产调优MapReduce 生产经验
生产调优MapReduce 生产经验MapReduce 跑的慢的原因MapReduce 程序效率的瓶颈在于两点:1)计算机性能CPU、内存、磁盘、网络2)I/O 操作优化(1)数据倾斜(2)Map 运行时间太长,导致 Reduce 等待过久(3)小文件过多MapReduce 常用调优参数MapReduce 数据倾斜问题1)数据倾斜现象数据频率倾斜——某一个区域的数据量要远远大于其他区域。数据大小倾斜——部分记录的大小远远大于平均值。2)减少数据倾斜的方法(1)首先检查是否空原创 2021-12-06 16:29:26 · 175 阅读 · 0 评论 -
生产调优HDFS—集群迁移
生产调优HDFS—集群迁移Apache 和 Apache 集群间数据拷贝1)scp 实现两个远程主机之间的文件复制scp -r hello.txt root@hadoop103:/user/atguigu/hello.txt // 推 pushscp -r root@hadoop103:/user/atguigu/hello.txt hello.txt // 拉 pullscp -r root@hadoop103:/user/atguigu/hello.txt root@hadoop104:/us原创 2021-12-06 16:14:22 · 367 阅读 · 0 评论 -
生产调优HDFS—故障排除
生产调优HDFS—故障排除注意:采用三台服务器即可,恢复到 Yarn 开始的服务器快照。NameNode 故障处理1)需求:NameNode 进程挂了并且存储的数据也丢失了,如何恢复 NameNode2)故障模拟(1)kill -9 NameNode 进程(2)删除 NameNode 存储的数据(/opt/module/hadoop-3.1.3/data/tmp/dfs/name)rm -rf /opt/module/hadoop3.1.3/data/dfs/name/*3)问题解决原创 2021-12-06 16:12:13 · 652 阅读 · 0 评论 -
生产调优HDFS—存储优化
生产调优HDFS—存储优化注:演示纠删码和异构存储需要一共 5 台虚拟机。尽量拿另外一套集群。提前准备 5 台服务器的集群。纠删码纠删码原理HDFS 默认情况下,一个文件有 3 个副本,这样提高了数据的可靠性,但也带来了 2 倍的冗余开销。Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约 50%左右的存储空间。1)纠删码操作相关的命令hdfs ec2)查看当前支持的纠删码策略hdfs ec -listPolicies3)纠删码策略解释:RS-3-2-1024k:使用 RS原创 2021-12-06 15:40:43 · 923 阅读 · 0 评论 -
生产调优HDFS—集群扩容及缩容
生产调优HDFS—集群扩容及缩容添加白名单白名单:表示在白名单的主机 IP 地址可以,用来存储数据。企业中:配置白名单,可以尽量防止黑客恶意访问攻击。配置白名单步骤如下:1)在 NameNode 节点的/opt/module/hadoop-3.1.3/etc/hadoop 目录下分别创建 whitelist 和blacklist 文件(1)创建白名单vim whitelist在 whitelist 中添加如下主机名称,假如集群正常工作的节点为 102 103(2)创建黑名单 touch b原创 2021-12-06 15:05:43 · 107 阅读 · 0 评论 -
生产调优HDFS—多目录
生产调优HDFS—多目录NameNode 多目录配置1)NameNode 的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性2)具体配置如下(1)在 hdfs-site.xml 文件中添加如下内容<property> <name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name原创 2021-12-06 14:39:12 · 446 阅读 · 0 评论 -
生产调优HDFS—集群压测
生产调优HDFS—集群压测在企业中非常关心每天从 Java 后台拉取过来的数据,需要多久能上传到集群?消费者关心多久能从 HDFS 上拉取需要的数据?为了搞清楚 HDFS 的读写性能,生产环境上非常需要对集群进行压测。HDFS 的读写性能主要受网络和磁盘影响比较大。为了方便测试,将 hadoop102、hadoop103、hadoop104 虚拟机网络都设置为 100mbps。100Mbps 单位是 bit;10M/s 单位是 byte ; 1byte=8bit,100Mbps/8=12.5M/原创 2021-12-05 20:36:13 · 102 阅读 · 0 评论 -
生产调优HDFS—核心参数
生产调优HDFS—核心参数NameNode 内存生产配置1)NameNode 内存计算每个文件块大概占用 150byte,一台服务器 128G 内存为例,能存储多少文件块呢?128 * 1024 * 1024 * 1024 / 150Byte ≈ 9.1 亿2)Hadoop2.x 系列,配置 NameNode 内存NameNode 内存默认 2000m,如果服务器内存 4G,NameNode 内存可以配置 3g。在hadoop-env.sh 文件中配置如下。HADOOP_NAMENODE_OP原创 2021-12-05 19:52:00 · 776 阅读 · 0 评论 -
Yarn 的 Tool 接口案例
Yarn 的 Tool 接口案例0)回顾hadoop jar wc.jar com.xiaoqiu.mapreduce.wordcount.WordCountDriver /input /output期望可以动态传参,结果报错,误认为是第一个输入参数。hadoop jar wc.jar com.xiaoqiu.mapreduce.wordcount.WordCountDriver -Dmapreduce.job.queuename=root.test /input /output1)需求:自己写的原创 2021-12-05 16:08:46 · 232 阅读 · 0 评论 -
Yarn 公平调度器案例
Yarn 公平调度器案例需求创建两个队列,分别是 test 和 xiaoqiu(以用户所属组命名)。期望实现以下效果:若用户提交任务时指定队列,则任务提交到指定队列运行;若未指定队列,test 用户提交的任务到 root.group.test 队列运行,xiaoqiu 提交的任务到 root.group.xiaoqiu 队列运行(注:group 为用户所属组)。公平调度器的配置涉及到两个文件,一个是 yarn-site.xml,另一个是公平调度器队列分配文件 fair-scheduler.xml(文件原创 2021-12-05 15:38:03 · 451 阅读 · 0 评论 -
Yarn 容量调度器多队列提交案例
Yarn 容量调度器多队列提交案例1)在生产环境怎么创建队列?(1)调度器默认就 1 个 default 队列,不能满足生产要求。(2)按照框架:hive /spark/ flink 每个框架的任务放入指定的队列(企业用的不是特别多)(3)按照业务模块:登录注册、购物车、下单、业务部门 1、业务部门 22)创建多队列的好处?(1)因为担心员工不小心,写递归死循环代码,把所有资源全部耗尽。(2)实现任务的降级使用,特殊时期保证重要的任务队列资源充足。业务部门 1(重要)=》业务部门 2(比较重原创 2021-12-05 14:55:15 · 179 阅读 · 0 评论 -
Yarn 生产环境核心参数配置案例
Yarn 生产环境核心参数配置案例注:调整下列参数之前尽量拍摄 Linux 快照,否则后续的案例,还需要重写准备集群。1)需求:从 1G 数据中,统计每个单词出现次数。服务器 3 台,每台配置 4G 内存,4 核CPU,4 线程。2)需求分析:1G / 128m = 8 个 MapTask;1 个 ReduceTask;1 个 mrAppMaster平均每个节点运行 10 个 / 3 台 ≈ 3 个任务(4 3 3)3)修改 yarn-site.xml 配置参数如下:<!-- 选择调度器原创 2021-12-05 14:13:35 · 1020 阅读 · 0 评论 -
Yarn 常用命令
Yarn 常用命令Yarn 状态的查询,除了可以在 hadoop106:8088 页面查看外,还可以通过命令操作。常见的命令操作如下所示:需求:执行 WordCount 案例,并用 Yarn 命令查看任务运行情况。yarn application 查看任务(1)列出所有 Application: yarn application -list(2)根据 Application 状态过滤:yarn application -list -appStates(所有状态:ALL、NEW、NEW_SAVIN原创 2021-12-05 12:03:21 · 610 阅读 · 0 评论 -
Yarn 调度器和调度算法
Yarn 调度器和调度算法目前,Hadoop 作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.1.3 默认的资源调度器是 Capacity Scheduler。CDH 框架默认调度器是 Fair Scheduler。具体设置详见:yarn-default.xml 文件<property> <description>The class to use as the resource原创 2021-12-05 10:37:31 · 288 阅读 · 0 评论 -
Yarn资源调度器
Yarn资源调度器Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。Yarn 基础架构YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件构成。Yarn 工作机制(1)MR 程序提交到客户端所在的节点。(2)YarnRunner 向 ResourceManager 申请一个 Applica原创 2021-12-05 10:37:19 · 72 阅读 · 0 评论 -
Hadoop 数据压缩
Hadoop 数据压缩概述1)压缩的好处和坏处压缩的优点:以减少磁盘 IO、减少磁盘存储空间。压缩的缺点:增加 CPU 开销。2)压缩原则(1)运算密集型的 Job,少用压缩(2)IO 密集型的 Job,多用压缩MR 支持的压缩编码1)压缩算法对比介绍2)压缩性能的比较压缩方式选择压缩方式选择时重点考虑:压缩/解压缩速度、压缩率(压缩后存储大小)、压缩后是否可以支持切片。Gzip 压缩优点:压缩率比较高;缺点:不支持 Split;压缩/解压速度一般;Bzip2 压缩优点原创 2021-12-05 10:37:07 · 305 阅读 · 0 评论 -
MapReduce 开发总结
MapReduce 开发总结1)输入数据接口:InputFormat(1)默认使用的实现类是:TextInputFormat(2)TextInputFormat 的功能逻辑是:一次读一行文本,然后将该行的起始偏移量作为key,行内容作为 value 返回。(3)CombineTextInputFormat 可以把多个小文件合并成一个切片处理,提高处理效率。2)逻辑处理接口:Mapper用户根据业务需求实现其中三个方法:map() setup() cleanup ()3)Partitioner原创 2021-12-04 20:03:13 · 116 阅读 · 0 评论 -
MapReduce 数据清洗(ETL)
MapReduce 数据清洗(ETL)“ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL 一词较常用在数据仓库,但其对象并不限于数据仓库。在运行核心业务 MapReduce 程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据。清理的过程往往只需要运行 Mapper 程序,不需要运行 Reduce 程序。案例1)去除日志中字段个数小于等于 11 的日志。原创 2021-12-04 20:01:57 · 1673 阅读 · 0 评论 -
MapReduce Join
MapReduce JoinReduce JoinMap 端的主要工作:为来自不同表或文件的 key/value 对,打标签以区别不同来源的记录。然后用连接字段作为 key,其余部分和新加的标志作为 value,最后进行输出。Reduce 端的主要工作:在 Reduce 端以连接字段作为 key 的分组已经完成,我们只需要在每一个分组当中将那些来源于不同文件的记录(在 Map 阶段已经打标志)分开,最后进行合并就 ok 了。Reduce Join 案例将商品信息表中数据根据商品 pid 合并到订单原创 2021-12-04 19:46:12 · 384 阅读 · 0 评论 -
ReduceTask 工作机制
ReduceTask 工作机制(1)Copy 阶段:ReduceTask 从各个 MapTask 上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。(2)Sort 阶段:在远程拷贝数据的同时,ReduceTask 启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。按照 MapReduce 语义,用户编写 reduce()函数输入数据是按 key 进行聚集的一组数据。为了将 key 相同的数据聚在一起,Hadoop 采用了原创 2021-12-04 16:03:20 · 240 阅读 · 0 评论 -
MapTask工作机制
MapTask工作机制(1)Read 阶段:MapTask 通过 InputFormat 获得的 RecordReader,从输入 InputSplit 中解析出一个个 key/value。(2)Map 阶段:该节点主要是将解析出的 key/value 交给用户编写 map()函数处理,并产生一系列新的 key/value。(3)Collect 收集阶段:在用户编写 map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的原创 2021-12-04 16:00:50 · 372 阅读 · 0 评论 -
MapReduce OutputFormat 数据输出
OutputFormat 数据输出OutputFormat是MapReduce输出的基类,所有实现MapReduce输出都实现了 OutputFormat接口。下面我们介绍几种常见的OutputFormat实现类。1.OutputFormat实现类2.默认输出格式TextOutputFormat3.自定义OutputFormat3.1 应用场景:例如:输出数据到MySQL/HBase/Elasticsearch等存储框架中。3.2 自定义OutputFormat步骤➢ 自定义一个类继承Fil原创 2021-12-04 15:58:14 · 699 阅读 · 0 评论 -
MapReduce Combiner 合并
MapReduce Combiner 合并(1)Combiner是MR程序中Mapper和Reducer之外的一种组件。(2)Combiner组件的父类就是Reducer。(3)Combiner和Reducer的区别在于运行的位置Combiner是在每一个MapTask所在的节点运行;(4)Combiner的意义就是对每一个MapTask的输出进行局部汇总,以减小网络传输量。(5)Combiner能够应用的前提是不能影响最终的业务逻辑,而且,Combiner的输出kv应该跟Reducer的输入kv原创 2021-12-04 15:30:53 · 219 阅读 · 0 评论 -
MapReduce WritableComparable 排序
MapReduce WritableComparable 排序排序是MapReduce框架中最重要的操作之一。MapTask和ReduceTask均会对数据按 照key进行排序。该操作属于Hadoop的默认行为。任何应用程序中的数据均会被排序,而不管逻辑上是否需要。默认排序是按照字典顺序排序,且实现该排序的方法是快速排序。对于MapTask,它会将处理的结果暂时放到环形缓冲区中,当环形缓冲区使用率达到一定阈值后,再对缓冲区中的数据进行一次快速排序,并将这些有序数据溢写到磁盘上,而当数据处理完毕后,原创 2021-12-04 15:11:03 · 458 阅读 · 0 评论 -
MapReduce Partition 分区
MapReduce Partition 分区问题引出要求将统计结果按照条件输出到不同文件中(分区)。比如:将统计结果按照手机归属地不同省份输出到不同文件中(分区)。默认Partitioner分区public class HashPartitioner<K, V> extends Partitioner<K, V> { public int getPartition(K key, V value, int numReduceTasks) { return (key.has原创 2021-12-04 12:00:49 · 579 阅读 · 0 评论 -
MapReduce Shuffle 机制
MapReduce Shuffle 机制Map 方法之后,Reduce 方法之前的数据处理过程称之为 Shuffle。原创 2021-12-04 11:00:12 · 226 阅读 · 0 评论 -
MapReduce 工作流程
MapReduce 工作流程MapReduce详细工作流程(一)MapReduce详细工作流程(二)上面的流程是整个 MapReduce 最全工作流程,但是 Shuffle 过程只是从第 7 步开始到第16 步结束,具体 Shuffle 过程详解,如下:(1)MapTask 收集我们的 map()方法输出的 kv 对,放到内存缓冲区中(2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件(3)多个溢出文件会被合并成大的溢出文件(4)在溢出过程及合并的过程中,都要调用 Partition原创 2021-12-03 11:23:29 · 256 阅读 · 0 评论 -
MapReduce 文件大小切片
MapReduce 文件大小切片InputFormat 数据输入切片与 MapTask 并行度决定机制MapTask 的并行度决定 Map 阶段的任务处理并发度,进而影响到整个 Job 的处理速度。思考:1G 的数据,启动 8 个 MapTask,可以提高集群的并发处理能力。那么 1K 的数据,也启动 8 个 MapTask,会提高集群性能吗?MapTask 并行任务是否越多越好呢?哪些因素影响了 MapTask 并行度?数据块:Block 是 HDFS 物理上把数据分成一块一块。数据块是 H原创 2021-12-03 11:21:38 · 1947 阅读 · 3 评论 -
MapReduce 序列化
MapReduce 序列化序列化概述序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。一般来说,“活的”对象只生存在内存里,关机断电就没有了。而且“活的”对象只能由本地的进程使用,不能被发送到网络上的另外一台计算机。 然而序列化可以存储“活的”对象,可以将“活的”对象发送到远程计算机。Java 的序列化是一个重量级序列化框架(Serializable),一个原创 2021-12-02 18:48:08 · 220 阅读 · 0 评论 -
MapReduce WordCount 案例
MapReduce WordCount 案例本地测试在给定的文本文件中统计输出每一个单词出现的总次数hello.txtjava pythonc c++phpjavapython cspark sqoopflume flinkpython cspark sqoopflume flinkpython cspark sqoopflume flink按照 MapReduce 编程规范,分别编写 Mapper,Reducer,Driver。1)创建 maven 工程,MapRed原创 2021-12-02 17:28:29 · 335 阅读 · 0 评论 -
MapReduce概述
MapReduce概述MapReduce 定义MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用”的核心框架。MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 Hadoop 集群上。优点1)MapReduce 易于编程它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的 PC 机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就原创 2021-12-02 15:43:18 · 643 阅读 · 0 评论 -
HDFS DataNode
HDFS DataNodeDataNode 工作机制(1)一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。(2)DataNode 启动后向 NameNode 注册,通过后,周期性(6 小时)的向 NameNode 上报所有的块信息。DN 向 NN 汇报当前解读信息的时间间隔,默认 6 小时;<property><name>dfs.blockreport.intervalMs原创 2021-12-02 15:12:16 · 525 阅读 · 0 评论 -
HDFS NN 和 2NN
HDFS NN 和 2NNNN 和 2NN 工作机制思考:NameNode 中的元数据是存储在哪里的?首先,我们做个假设,如果存储在 NameNode 节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage。这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新 FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一旦 Na原创 2021-12-02 14:54:58 · 91 阅读 · 0 评论 -
HDFS 写读数据流程
HDFS 写数据流程(1)客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件,NameNode 检查目标文件是否已存在,父目录是否存在。(2)NameNode 返回是否可以上传。(3)客户端请求第一个 Block 上传到哪几个 DataNode 服务器上。(4)NameNode 返回 3 个 DataNode 节点,分别为 dn1、dn2、dn3。(5)客户端通过 FSDataOutputStream 模块请求 dn1 上传数据,dn1 收到请求会继原创 2021-12-02 11:42:21 · 57 阅读 · 0 评论 -
HDFS API
HDFS APIpackage com.xiaoqiu;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import org.junit.After;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.net.URI;import java.net.URISyntaxEx原创 2021-12-02 11:28:13 · 417 阅读 · 0 评论 -
Hadoop免密登录
Hadoop免密登录免密登录原理生成公钥和私钥ssh-keygen -t rsa然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)将公钥拷贝到要免密登录的目标机器上ssh-copy-id hadoop102原创 2021-12-02 11:25:18 · 90 阅读 · 0 评论 -
Hadoop同步脚本
Hadoop入门重点笔记(二)scp(secure copy)安全拷贝(1)scp 定义scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)(2)基本语法scp -r $pdir/$fname &nbs原创 2021-12-01 17:33:54 · 240 阅读 · 0 评论