![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hadoop
薯条加可乐谢谢
这个作者很懒,什么都没留下…
展开
-
Hadoop HA 高可用
HA概述所谓HA(High Available),即高可用(7*24小时不中断服务)。实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。NameNode主要在以下两个方面影响HDFS集群(1)NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启(2)NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用HDFS HA功能原创 2020-08-20 10:43:11 · 206 阅读 · 0 评论 -
MapReduce - 压缩
压缩位置的选择压缩参数配置要在Hadoop中启用压缩,可以配置如下参数:原创 2020-08-09 20:14:09 · 129 阅读 · 0 评论 -
MapReduce - 计数器 与 数据清洗
计数器数据清洗一般是在map阶段,对输入的数据进行一些合法性检查。对于不合法的数据,在map函数中直接return,合法的才继续走下去。原创 2020-08-09 18:10:23 · 102 阅读 · 0 评论 -
MapReduce - Map Join 案例
数据基于https://blog.csdn.net/u012321968/article/details/107863294使用场景Map Join适用于一张表十分小、一张表很大的场景。优点思考:在Reduce端处理过多的表,非常容易产生数据倾斜。怎么办?在Map端缓存多张表,提前处理业务逻辑,这样增加Map端业务,减少Reduce端数据的压力,尽可能的减少数据倾斜。具体办法:采用DistributedCache(1)在Mapper的setup阶段,将文件读取到缓存集合中。(2)在驱动函数中原创 2020-08-09 15:15:22 · 167 阅读 · 0 评论 -
MapReduce - Reduce Join 案例
Reduce Join工作原理Reduce Join案例实操2.需求分析通过将关联条件作为Map输出的key,将两表满足Join条件的数据并携带数据所来源的文件信息,发往同一个ReduceTask,在Reduce中进行数据的串联相关代码TableBean.javapackage MapReduceJoin;import org.apache.hadoop.io.Writable;import org.apache.hadoop.io.WritableComparator;impo原创 2020-08-07 15:30:45 · 593 阅读 · 1 评论 -
MapReduce自定义OutputFormat
3.驱动类中job.setOutputFormatClass(MyOutputFormat.class);注意自定义了OutputFormat,那么在Driver中也要FileOutputFormat.setOutputPath指定输出路径,因为MapReduce本身还要输出一些额外的文件,如crc文件相关代码(以WordCount为例)MyOutputFormat.javapackage MapReduceCustomOutputFormat;import org.apache.hadoo.原创 2020-08-07 11:12:54 · 273 阅读 · 0 评论 -
MapReduce中一次reduce方法的调用中key的值不断变化分析及源码解析
结合GroupingComparator的例子来说明输入源数据从左到右依次为订单id,商品编号和商品价格需求:输出每个订单中价格最高的商品思路:1.在map之前的排序规则:订单号不同时按字典排序,订单号相同时按价格降序2.在reduce分组排序时,只要订单号相同就认为是相同的key,遍历迭代器的时候只取第一个相关代码OrderBean.javapackage MapReduceGroupComparator;import org.apache.hadoop.io.WritableCo原创 2020-08-07 10:44:37 · 522 阅读 · 0 评论 -
MapReduce自定义排序案例
数据来源基于Hadoop序列化小例子[统计手机的上行流量,下行流量,总流量]MapReduce排序在Shuffle阶段,在分区之后,排序时根据key值默认按字典顺序进行排序,排序方法为快速排序。基于上述案例的自定义排序原理FlowBean对象做为key传输,需要实现WritableComparable接口重写compareTo方法,就可以实现排序。相关代码FlowBean.javapackage MapReduceFlow;import org.apache.hadoop.io.Wri原创 2020-08-06 00:04:45 · 353 阅读 · 0 评论 -
MapReduce自定义分区
分区分区的工作发生在Shuffle阶段,即map之后reduce之前。自定义分区步骤相关代码package MapReduceFlow;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Partitioner;public class MyPartitioner extends Partitioner<Text,FlowBean> { @Override public in原创 2020-08-05 23:30:57 · 565 阅读 · 0 评论 -
MapReduce自定义InputFormat小例子
模拟小需求对多个小文件进行读取,设置不可切片,传给map方法得key为小文件的完整路径,value为整个小文件的内容。输出的时候合并成一个SequenceFile文件(SequenceFile文件是Hadoop用来存储二进制形式的key-value对的文件格式),SequenceFile里面存储着多个文件,存储的形式为文件路径+名称为key,文件内容为value。自定义步骤RecordReader是在map之前调用,负责给map函数传key和value值相关代码CustomInputForma原创 2020-08-05 22:36:08 · 222 阅读 · 0 评论 -
初探MapReduce切片
MapTask并行度决定机制数据块:Block是HDFS物理上把数据分成一块一块。数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。数据切片与MapTask并行度决定机制注意第4小点:切片时是逐个针对每一个文件单独切片Job提交流程FileInputFormat源码分析FileInputFormat切片机制CombineTextInputFormat1、应用场景:CombineTextInputFormat用于小文件过多的场景,它可以将多个小文件从原创 2020-08-05 22:28:24 · 508 阅读 · 0 评论 -
Hadoop序列化小例子[统计手机的上行流量,下行流量,总流量]
原始数据随便生成的模拟数据flowbean.txt手机号 IP地址 上行流量 下行流量 网络代码13345734563 192.168.1.1 1116 3452 20013545734556 192.168.1.1 1126 252 20013545734345 192.168.1.1 34516 3362 20013575734574 192.168.1.1 1886 3642 20018945734596 192.168.1原创 2020-08-05 14:26:38 · 614 阅读 · 0 评论 -
在Hadoop集群中运行自己写的JAVA代码
将JAVA源代码生成jar包1.maven的pom文件中加入以下依赖<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configu原创 2020-08-05 10:49:09 · 817 阅读 · 0 评论 -
HDFS中的白名单和黑名单
配置白名单(1)在NameNode的/opt/module/hadoop-2.7.2/etc/hadoop目录下创建dfs.hosts文件,添加如下主机名称(不添加hadoop105)hadoop102hadoop103hadoop104(2)在NameNode的hdfs-site.xml配置文件中增加dfs.hosts属性<property><name>dfs.hosts</name><value>/opt/module/hadoop-2原创 2020-07-27 11:39:06 · 857 阅读 · 0 评论 -
Namenode和SecondaryNamenode工作机制
第一阶段:NameNode启动(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。(2)客户端对元数据进行增删改的请求。(3)NameNode记录操作日志,更新滚动日志。(4)NameNode在内存中对数据进行增删改。第二阶段:Secondary NameNode工作(1)Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。(2)Secon..原创 2020-07-27 11:20:55 · 136 阅读 · 0 评论 -
HDFS写数据流程
1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。2)NameNode返回是否可以上传。3)客户端请求第一个 Block上传到哪几个DataNode服务器上。4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。如果有多个节点,返回实际的副本数量,并根据距离及负载情况计算5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn.原创 2020-07-27 11:13:29 · 83 阅读 · 0 评论 -
JAVA操作HDFS
创建一个Maven工程1.pom.xml文件中添加<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId&g原创 2020-07-27 11:08:28 · 109 阅读 · 0 评论 -
Hadoop 常用配置 及 基本命令
core-site.xml<!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name> <value>hdfs://hadoop101:9000</value></property><!-- 指定Hadoop运行时产生文件的存储目录 --><property> <name>hadoop.tmp.dir&原创 2020-07-27 10:29:37 · 648 阅读 · 0 评论