- 博客(531)
- 资源 (29)
- 收藏
- 关注

原创 mapreduce中split划分分析(新版api)
面试的过程中,笔者经常喜欢问一个问题:hadoop中map数是怎么确定的?但发现还是有好多面试者都答不上来。这个问题其实算是比较基础的一个问题,对于理解mapreduce的原理很有帮助。今天有空结合源码分析一下。 本文以hadoop2.7.2的版本作为分析,代码链接如下。 —— [ github代码地址 ]本文以org.apache.hadoop.mapreduce包作为讲解(即新AP...
2018-01-27 10:19:29
14770
2

原创 hive中join导致的数据倾斜问题排查
hive中大key导致的join数据倾斜问题1、场景如果某个key下记录数远超其他key,在join或group的时候可能会导致某个reduce任务特别慢。本文分析下join的场景。本例子SQL如下:查询每个appid打开的次数,需要排除掉作弊的imei。selectappid,count(*)from ( select md5imei,appid from ( select t1.md5im...
2017-08-10 22:55:22
26912
3
原创 hive 的 left semi join 讲解
介绍LEFT SEMI JOIN (左半连接)是 IN/EXISTS 子查询的一种更高效的实现。Hive 当前没有实现 IN/EXISTS 子查询,所以可以用LEFT SEMI JOIN 重写你的子查询语句。示例可以改写为特点1、left semi join 的限制是, JOIN 子句中右边的表只能在 ON 子句中设置过滤条件,在 WHERE 子句...
2019-11-12 11:26:57
1595
原创 sparksql通过jdbc读取mysql时划分分区问题
当通过spark读取mysql时,如果数据量比较大,为了加快速度,通常会起多个任务并行拉取mysql数据。其中一个api是defjdbc(url: String, table: String, columnName: String, lowerBound: Long, upperBound: Long, numPartitions: Int, connectionProperties: Pr...
2018-11-10 18:00:58
6722
1
原创 多年大数据开发经验总结
多年工作经验总结初入行,搞大数据开发。得高人指点,先学mapreduce,不足一年,tez兴,后入此道。朝夕不倦,发愤图强,才能略知一二。无奈后浪推前浪,tez被spark拍在沙滩上,遂投spark之怀。继而抖擞精神,奋袂而起,github、stackoverflow轮番上阵,终七窍通六窍。然乾坤更替,岁月不复,spark转眼成过眼烟云,flink、 beam之流成业界新宠,一时洛阳纸贵,众人...
2018-08-24 10:02:23
5792
12
原创 Hadoop里的设计模式之单例模式
单例模式是创建性模式之一,算是比较简单好理解的了。单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。我们以Hadoop2.7版本中的ShutdownHookManager举例讲解单例模式的几个需要注意的地方: 1)将构造方法私有化。单例模式通常是在类内部提供一个可供使用的对象,通过公共接口对外提供该对象。为了避免在类外面通过new的方式再次生成对象,通常都会将构造方法私有化...
2018-06-22 16:53:41
1349
原创 查看线程数的几种方法
1 toptop -H -p 如下 如果是查看系统中总的线程数,直接用top -H选项 2 pstreepstreee -p pid |wc -l 如果是查看系统中总的线程数,用pstree -p |wc -l 3 通过/proccat /proc/17592/status 4 通过/procll /proc/17592/task/|wc -l ...
2018-06-09 08:56:48
34377
原创 centos7.4安装图形界面并远程桌面连接
1 系统版本CentOS release 6.2 (Final) 以下安装需要用root权限操作。2 安装x windowsyum groupinstall -y “X Window System” //注意有引号3 安装图形界面软件 GNOMEyum groupinstall -y “GNOME Desktop” “Graphical Administration ...
2018-05-10 17:55:08
19296
4
原创 mapreduce程序中避免reduce输出空文件
在mapreduce里,如果某个reduce输出为空,默认也会生成一个大小为0的文件。原因是reduce写的时候,不知道会不会有输出数据,所以默认初始化了一个文件。如果没有输出,close文件最终会生成一个空文件。如下。有几个缺点: 1)生成的很多小文件,对namenode形成一定压力 2)生成的数据下个阶段处理的时候,这些空的文件会浪费掉一些计算资源。 3)看着不爽-rw-r--r--...
2018-05-09 11:24:06
8280
1
原创 如何查看jvm中的各种参数以及默认值
1 标准参数标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 通过命令 java即可查看 如下where options include: -d32 use a 32-bit data model if available -d64 use a 64-bit data model if available...
2018-04-28 10:36:51
22999
原创 不同gc垃圾回收器组合及日志样例
不同的jvm参数所使用的老年代、年轻代组合如下图。 参数 新生代 老年代 -XX:+UseSerialGC Serial(DefNew) Serial Old -XX:+UseParNewGC ParNew Serial Old -XX:+UseConcMarkSweepGC ParNew CMS + Serial Old...
2018-04-27 13:30:03
1001
原创 Spark SQL中Join常用的几种实现
1、引言Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余、更新容错等。而建立表和表之间关系的最佳方式就是Join操作。SparkSQL作为大数据领域的SQL实现,自然也对Join操作做了不少优化,今天主要看一下在SparkSQL中对于Join,常见的3种实现。2 、Spark SQL中Join常用的实现2.1 、Broa...
2018-04-27 13:13:47
2627
转载 Understanding Hive joins in explain plan output
Hive is trying to embrace CBO(cost based optimizer) in latest versions, and Join is one major part of it. Understanding join best practices and use cases is one key factor of Hive performance tunning....
2018-04-24 18:52:27
405
原创 hive中 bucket mapjoin 与 SMB join(Sort-Merge-Bucket)区别
1 bucket mapjoin1.1 条件1) set hive.optimize.bucketmapjoin = true; 2) 一个表的bucket数是另一个表bucket数的整数倍 3) bucket列 == join列 4) 必须是应用在map join的场景中1.2 注意1)如果表不是bucket的,只是做普通join。2 SMB join (...
2018-04-24 18:50:23
6108
原创 Hive中mapjoin优化例子
1 基本信息3个表,1个事实表,2个维度表事实表 test_fact (mid string,sex_id string,age_id string )维度表dim_user_demography_age (age_id string,age_name string )维度表dim_user_demography_sex (sex_id string,sex_name strin...
2018-04-24 16:24:12
3287
原创 openjdk1.8执行jmap报错
openjdk版本openjdk version "1.8.0_161"OpenJDK Runtime Environment (build 1.8.0_161-b14)OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)执行jmap -heap 报错 jmap -heap 17694 Attaching to pro...
2018-04-23 11:50:09
5948
2
原创 Spark1.6内存管理(二) 实例讲解:Spark管理页面中Storage Memory是如何计算的?
书接上文: https://blog.youkuaiyun.com/wisgood/article/details/78069753 本文主要讲解879.0MB是如何算出来的?spark用的是1.6版本。 对应程序的参数设置为 spark-shell --executor-memory 1536M Storage Memory该页面显示的Storage Memory 实际是上文...
2018-04-08 13:11:47
11498
原创 Runtime.getRunTime.maxMemory为啥比Xmx指定的内存小
先贴一些程序代码import java.lang.management.ManagementFactory;import java.lang.management.MemoryMXBean;import java.lang.management.MemoryPoolMXBean;public class MemoryDemo { static String mb(long ...
2018-04-08 12:05:33
9499
翻译 64位jvm和32位jvm性能
原文引自于: http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#64bit_description 一般来说,64位jvm相比32位jvm能够处理更大的内存,但伴随而来的一个小的性能损失。 这是因为系统中的每个本地指针在64位jvm上都占用8个字节而不是4个。加载这些额外的数 据会影响内存使用量,这会导致执行速度稍...
2018-04-05 10:03:03
7486
1
原创 Java多线程-生产者消费者例子-使用阻塞队列(BlockingQueue)实现
import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;/** * Created by wisgood . */public class ProducerConsumerWithBlockingQueueDemo { public static void...
2018-03-28 19:36:01
4496
原创 Java多线程-生产者消费者例子-使用Lock实现
import java.util.LinkedList;import java.util.List;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * Create...
2018-03-28 19:33:26
2045
原创 Java多线程-生产者消费者例子-使用Synchronized实现
import java.util.LinkedList;import java.util.List;/** * Created by wisgood . */public class ProducerConsumerWithSynchronizedDemo { public static void main(String[] args) { ProductFac...
2018-03-28 19:31:09
607
转载 深入理解ThreadLocal
学习JDK中的类,首先看下JDK API对此类的描述,描述如下:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal其实就是一个工具类,用来操作线程局部变量,ThreadLocal 实例通常是类中的 private stati
2017-12-23 15:50:29
647
原创 Spark1.6内存管理(一)
从1.6.0版本开始,Spark内存管理模型发生了变化。旧的内存管理模型由StaticMemoryManager类实现,现在称为“legacy(遗留)”。默认情况下,“Legacy”模式被禁用,这意味着在Spark 1.5.x和1.6.0上运行相同的代码会导致不同的行为。为了兼容,您可以使用spark.memory.useLegacyMode参数启用“旧”内存模型。 1.6.0及以后版本,使用的...
2017-09-23 11:33:24
1577
原创 spark读取kafka两种方式的区别
参考:http://spark.apache.org/docs/1.4.1/streaming-kafka-integration.html Receiver与Direct方法相比,后者具有以下优点。简化并行性无需创建多个输入Kafka流和联合它们。使用directStream,Spark Streaming将创建与要消费的Kafka分区一样多的RDD分区,这将从Kafka并行读取...
2017-08-23 22:31:19
2930
转载 Spark踩坑记——Spark Streaming+Kafka
前言在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark streaming从kafka中不断拉取数据进行词频统计。本文首先对spark streaming嵌入kafka的方式进行归纳总结,之后简单阐述Spark streaming+kafka在舆情项目中的应用,最后将自己
2017-07-26 10:22:01
2750
1
转载 Kafka无消息丢失配置
Kafka到底会不会丢数据(data loss)? 通常不会,但有些情况下的确有可能会发生。下面的参数配置及Best practice列表可以较好地保证数据的持久性(当然是trade-off,牺牲了吞吐量)。笔者会在该列表之后对列表中的每一项进行讨论,有兴趣的同学可以看下后面的分析。block.on.buffer.full = trueacks = allretries = MAX_VAL
2017-07-25 14:08:35
3201
转载 kafka consumer防止数据丢失
kafka最初是被LinkedIn设计用来处理log的分布式消息系统,因此它的着眼点不在数据的安全性(log偶尔丢几条无所谓),换句话说kafka并不能完全保证数据不丢失。 尽管kafka官网声称能够保证at-least-once,但如果consumer进程数小于partition_num,这个结论不一定成立。 考虑这样一个case,partiton_num=2,启
2017-07-25 13:25:24
3641
转载 Kafka Mirror Maker Best Practices
Short Description:Best Practices in running Kafka Mirror MakerArticleKafka's mirroring feature makes it possible to maintain a replica of an existing Kafka cluster. This tool uses Kafka cons
2017-07-25 13:07:27
1576
原创 java jvm gc常用参数
推荐用法-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:/home/gc.log1、-verbose:gc这个参数会输出虚拟机中GC的情况.使用后输出如下:[Full GC 168K->97K(1984K), 0.0253873 secs] 箭头前后的数据168K和97K分别表示垃圾收集GC...
2017-05-18 18:46:57
1081
原创 MapReduce任务中文部分正常,部分乱码
集群上提交的mr任务,发现结果中有的中文正常,有的中文是论码。分析了一下,应该是集群中hadoop节点的编码配置不一样。可以加上下面的参数:mapred.child.env="LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8" ;
2017-02-20 10:29:18
1182
转载 论SparkStreaming的数据可靠性和一致性
Driver HA由于流计算系统是长期运行、且不断有数据流入,因此其Spark守护进程(Driver)的可靠性至关重要,它决定了Streaming程序能否一直正确地运行下去。Driver实现HA的解决方案就是将元数据持久化,以便重启后的状态恢复。如图一所示,Driver持久化的元数据包括:Block元数据(图1中的绿色箭头):Receiv
2017-02-19 11:34:17
1077
rpmbuild-demo工程
2015-01-21
Weka源代码详细分析系列
2012-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人