![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hadoop
Enzo_bigdata
热衷于大数据技术,乐观向上,爱分享
展开
-
设计RPC框架应考虑的问题
最近面试遇到一个很好的问题,面试官说如何设计一个RPC框架,虽然自己在Hadoop中会用到RPC,但是从来没总结过PRC框架的知识点,所以记录一下喽。RPC作用RPC作为分布式系统常见的一种通信方法,通俗来讲,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。框架需解决问题RPC要达到的目标:远程调用时,要能够像...原创 2019-10-31 11:34:20 · 1547 阅读 · 0 评论 -
多构造器参数使用build设计模式
最近看HDFS源码,看到写副本时,ReplicaInfo类使用到了build设计模式,所以整理这篇文章,加深学习。提出问题当一个业务复杂的类包含多个属性时,如果我们想要创建实例对象时,就必须定义构造器,针对属性的可选性,我们的类可能变得如下:public class User { private final String name; private final int ag...原创 2019-10-28 21:45:56 · 1696 阅读 · 0 评论 -
记一次有趣的hadoop源码编译
之前看到过很多人讲解源码编译,但自己一直没有尝试过。最近由于工作需要,想在本地搭建一个hadoop阅读环境,学习一下hadoop源码。准备阶段(1)首先下载要编译的hadoop源码版本,镜像链接如下:http://mirror.bit.edu.cn/apache/hadoop/common/(2)进入到hadoop目录,查看BUILDING.txt,了解编译需要的环境要求:比如本人编译的...原创 2019-05-04 13:58:14 · 1682 阅读 · 0 评论 -
hdfs mkdir递归建立目录背后的设计
我们都知道hdfs命令:hdfs fs -mkdir -p /xx1/xx2/xx3 可递归创建一个目录,简单的命令背后,hadoop源码是如何执行的呐?接下来一起领略一下hadoop的源码魅力。接下来直接上mkdirs方法:public boolean mkdirs(Path f) throws IOException{ Path parent = f.getParent(); //...原创 2019-05-12 15:37:52 · 4077 阅读 · 0 评论 -
反射和动态代理
1 关于反射反射最大的作用之一就在于我们可以不在编译时知道某个对象的类型,而在运行时通过提供完整的”包名+类名.class”得到。注意:不是在编译时,而是在运行时。功能:在运行时能判断任意一个对象所属的类。在运行时能构造任意一个类的对象。在运行时判断任意一个类所具有的成员变量和方法。在运行时调用任意一个对象的方法。通俗来讲,利用Java反射机制我们可以加载一个运行时才得知名称的c...原创 2019-06-23 14:14:48 · 1090 阅读 · 0 评论 -
synchronized大盘点
利用synchronized实现同步的基础Java 中的每一个对象都可以作为锁,具体表现为三种形式:对于普通同步方法,锁的是当前实例对象;对于静态同步方法,锁的是当前类的class对象;对于同步代码块,锁的是synchronzied括号中配置的对象。(静态为何锁的是class对象:synchronzied方法执行之前需要一个monitor,对于一个静态方法而言,monitor关联的是类...原创 2019-07-09 22:46:48 · 965 阅读 · 0 评论 -
java线程池知识点
线程池的优势合理的使用线程池会带来三个好处:降低资源的消耗。通过重复利用已创建的线程降低线程创建和销毁的开销;提高响应速度。当任务到达时,任务不需要等到线程创建就能直接执行;提高线程的可管理性。线程是稀缺资源,使用线程池可以进行统一分配、调优和监控。工作原理线程池保存一定量的线程,当有任务提交到线程池时,线程池若还没有达到最大线程数,则创建一个线程执行任务。若所有的线程都处于工作状...原创 2019-06-30 20:50:12 · 1225 阅读 · 1 评论 -
ReentrantLock知识大盘点
定义重入锁就是支持重新进入的锁,表示该锁能够支持一个线程对资源的重新加锁。实现重进入ReenTrantLock为了实现重进入,必须要解决两个问题:(1) 线程再次获取锁;(2) 锁的最终释放。ReentrantLock是通过组合自定义同步器来实现锁的获取和释放,处理逻辑:通过判断当前线程是否为获取锁的线程来决定获取操作是否成功,如果是获取锁的线程再次请求,则将同步状态值进行增加并返...原创 2019-07-22 13:33:41 · 741 阅读 · 0 评论 -
生产者-消费者模式
生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率,这是生产者消费者模型最重要的作用 。/** * 生产者消费者模型 * 通过wait、notify实现 * 缓冲区满和为...原创 2019-07-22 13:46:51 · 689 阅读 · 0 评论 -
自定义一个类叫java.lang.System???
原则上不行,类加载使用了双亲委托机制,当类加载器接收到类加载请求时,首先,该类加载器不会直接去加载类,而是让父类去加载,父类再去找父类去加载;当最顶层的父类无法加载时,才让子类去加载;System类会由启动类加载器去加载,所以我们自定义的System类完全没机会去加载。通过下面源码,可以看到类加载的整个处理逻辑。public Class<?> loadClass(String...原创 2019-07-26 19:51:59 · 487 阅读 · 0 评论 -
常用linux命令汇总
后台进程ps -aux | more #查看后台运行的所有进程ps -aux|grep XXX ##查看指定内容的后台进程ps -aux | grep sshd ##查看sshd服务是否启动ps -ef | more #查看父进程ps -ef | grep sshd #查看sshd服务的父进程pstree -p #进程树ps -a:显示当前终端的所有进程信息ps...原创 2019-04-23 22:50:17 · 1605 阅读 · 0 评论 -
hive调优总结
###(1)本地模式:hadoop默认会将job提交到YARN集群,如果在测试阶段数据量比较小,可开启本地模式,加快程序执行的速度。set hive.exec.mode.local.auto=true;###(2)小表join大表1、保证大表在后,小表在前;原因:多表join时,hive假定查询中最后一个表是最大的表,在对每行记录进行join操作时,他会尝试将其他表缓存起来,然后扫描最后...原创 2019-04-08 17:40:22 · 1894 阅读 · 0 评论 -
DataNode节点超时时间设置
datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为:timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.i...原创 2018-12-04 09:05:05 · 1389 阅读 · 0 评论 -
HDFS冗余数据块的自动删除设置
在日常维护hadoop集群的过程中发现这样一种情况:某个节点由于网络故障或者DataNode进程死亡,被NameNode判定为死亡,HDFS马上自动开始数据块的容错拷贝;当该节点重新添加到集群中时,由于该节点上的数据其实并没有损坏,所以造成了HDFS上某些block的备份数超过了设定的备份数。通过观察发现,这些多余的数据块经过很长的一段时间才会被完全删除掉,那么这个时间取决于什么呢?该时间的长...原创 2018-12-04 08:51:46 · 684 阅读 · 0 评论 -
Hadoop机架感知技术
背景Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,HDFS的存放策略是第1个复本存放在运行客户端的本地机架节点上,第2个复本存放在不同机架的一个节点上,第三个复本存放在与第2复本相同机架、不同节点上。这种策略减少了机架间的数据传输,提高了写操作的效率。这样如果本地数据损坏,节点可以从同一机架内的相邻节点拿到数据,速度肯定比从跨机架节点上拿数据要快;同时,如果整个机...原创 2018-12-03 22:51:07 · 1204 阅读 · 2 评论 -
HDFS的HA机制
简介所谓HA,即高可用(7*24小时不中断服务),实现高可用最关键的是消除单点故障hadoop-HA严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HAHDFS的HA机制架构HDFS的HA机制详解Hadoop2增加了对HDFS的HA支持,配置了一对活动-备用(active-standy)namenode,当活动namenode失效,备用namenode接管它的任务并开始...原创 2018-12-03 22:36:49 · 3882 阅读 · 3 评论 -
HDFS读写文件流程
文件写入HDFS1、整体过程:客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按顺序将文件分割为若干个block,传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本2、详细步骤:1、client向namenode通信请求上传文件,namenode检查...原创 2018-12-02 21:41:09 · 4515 阅读 · 1 评论 -
HDFS如何保证数据的完整性
总的来说,HDFS 会对写入的数据计算校验和,并在读取数据时验证校验和。具体来说,datanode 负责收到数据后存储该数据及其校验和。datanode 的数据来源可分为两种:其一为是从客户端收到的数据,其二为从其他 datanode 复制来的数据。还有一种情况,客户端将数据及其校验和发送到由一系列 datanode 组成的管线,管线中最后一个 datanode 负责验证校验和。每个 data...原创 2018-12-02 21:33:56 · 3453 阅读 · 1 评论 -
Hive调用python脚本
Hive的 TRANSFORM 关键字提供了在SQL中调用自写脚本的功能,本实例通过python脚本对电影数据进行清洗,帮助读者了解hive调用python脚本的整个流程。操作步骤:1、创建基表CREATE TABLE u_data ( userid INT, //用户ID movieid INT, //电影ID rating INT, //电...原创 2018-12-06 11:04:29 · 5883 阅读 · 1 评论 -
数据倾斜解决方案
数据倾斜定义简单的讲,数据倾斜就是我们在数据计算的时候,由于数据的分散度不够,导致大量的数据集中到了一台或者几台机器上计算,这些机器的计算速度远远低于整个集群的平均计算速度,导致整个计算过程十分缓慢。常见数据倾斜现象数据倾斜往往会发生在数据开发的各个环节中,比如:用Hive数据计算的时候reduce阶段卡在99.99%用SparkStreaming做实时算法的时候,一直会有executo...原创 2018-12-11 09:11:47 · 2993 阅读 · 0 评论 -
hive中order by 、sort by、distribute by、cluster by、group by操作
order by对输入做全局排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。SELECT * FROM db_hive.employee ORDER BY empID desc; //按照empID降序排列sort by不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by进行排序,并且设置mapreduce.job.redu...原创 2018-12-11 09:48:47 · 4544 阅读 · 0 评论 -
数据质量保障原则
评估数据质量的好坏,业界标准并不统一。阿里巴巴对数据仓库主要从四个方面进行评估,即完整性、准确性、一致性和及时性。完整性完整性是指数据的记录和信息是否完整,是否存在缺失的情况。数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成数据不准确,所以说完整性是数据质量最基础的保障。比如交易中每天支付订单数都在100万笔左右,如果某一天支付订单数突然下降到1万笔,那么很可能是记录缺失...原创 2018-12-05 10:14:47 · 2934 阅读 · 1 评论