
大数据
文章平均质量分 93
Elong_Hu
Live to Make A Difference.
展开
-
《从0开始学大数据》的启示
《从0开始学大数据》学习后感方法论与哲学了解来龙去脉形成思维体系,为什么是A而不是B?大数据发展历史分布式计算的核心思想从RAID到HDFS(存储)计算框架与计算模型(MR)解耦的资源调度框架从Hive-MR看novel从MR-Spark看产品思维Spark到底为什么快各个组件的在生态中的位置Lambda架构与大数据平台大数据与物联网方法论与哲学了解来龙去脉形成思维体系,为什么是A而不是B?当我写这篇文章的时候,心情比较急躁,也可能是焦虑。我同时想到了这句话回想自己学习技术的时候,更多地是急躁的专原创 2022-02-14 19:43:37 · 1695 阅读 · 0 评论 -
众创资源分享平台的设计与实现
写在前面:把前几年的毕业设计论文放出来,主要实现的是基于JavaEE的前后端的,带有搜索引擎的与SparkML推荐算法的一个网站的设计。没有什么创新,只是一些技术的整合。摘 要:本系统是一个功能较为完备的资源分享平台,实现了资源分享、资源搜索、资源推荐等功能。其中网站的主体通过经典的JavaEE框架构建,通过Lucene技术与Solr技术提供资源搜索服务,并且实现了以机器学习ALS算法为核心的资源推荐系统,使得用户可以更为方便地找到想要的资源。关键词:资源分享; 全文...原创 2022-01-24 13:39:30 · 1797 阅读 · 0 评论 -
Spark之CacheManager运行流程
Spark之CacheManager运行流程CacheManager概述 CacheManager的功能是将RDD的数据进行持久化。当Task要针对一个RDD中的Partition进行计算时如果发现我们即将产生的RDD已经被CacheManager持久化了,那么我们可以直接拿到目标数据而无需再进行计算。具体来说,我们的计算过程发生在RDD的iterator()方法中。当我们要拿...原创 2019-02-16 19:57:04 · 447 阅读 · 0 评论 -
Spark之Master状态转换
Spark之Master状态转换在Driver与Executor的状态发生改变的时候他们会给Master发送一些信息,之后Master会根据这些状态准换的信息做出相应的动作。Driver状态转换当Driver的程序发生改变会向Master发送一个状态转换的信息。Master会根据传过来的DriverID找到对应的Driver,然后判断这个Driver的信息是否为终结状态(包括失败,杀掉...原创 2019-01-23 10:04:08 · 440 阅读 · 0 评论 -
Spark之调优指南
Spark之系统调优指南我们写好的代码像是一些信息的有序组合,硬件资源就像是能量。我们就是想让信息去最大限度的利用好这些能量去达完成我们的目标。具体的我们要尽可能的去压榨CPU资源,减小网络传输,减少内存的浪费,避免磁盘IO带来的时间效率的低下。下面从几个维度去总结一些Spark的优化。以下为石杉老师课程笔记的整理:内存内存花费在哪里1、每个Java对象,都有一个对象头,会占用...原创 2019-02-19 11:20:55 · 370 阅读 · 0 评论 -
Spark商业实战三部曲源码地址
https://github.com/duanzhihua/code-of-spark-big-data-business-trilogy/转载 2019-03-18 10:34:35 · 1129 阅读 · 1 评论 -
SparkSQL读写kudu小记
在操作之前首先要有相应的依赖<dependency> <groupId>org.apache.kudu</groupId> <artifactId>kudu-spark2_2.11</artifactId> <version>1.8.0</version> &a原创 2019-03-18 10:42:35 · 3718 阅读 · 1 评论 -
Spark中宽依赖、shuffle、join之间的关系
这是一个有意思的问题。准确来说只有宽依赖===>shuffle,也就是如果发生了宽依赖那么就一定发生了shuffle过程。其余的都没有直接联系。1.发生宽依赖就一定会伴随着shuffle。2.发生shuffle不一定产生宽依赖比如一个RDD在不断的做join的过程。这个过程中每个RDD都使用了相同的分区器内部是基于cogroup的shuffle操作但是它的整个过程在同一个St...原创 2019-03-29 13:48:29 · 1925 阅读 · 1 评论 -
Spark之SparkSQL内核解析
SparkSQL内核解析使用SparkSQL引擎去解析SQL与其它的SQL执行引擎也是非常相似的,都要进过未解析逻辑计划-->解析后的逻辑计划-->逻辑计划优化-->物理计划-->执行物理计划等步骤。下面我们详细说明。生成未解析的逻辑计划我们在Spark中执行SQL语句就要用到SQLContext的sql()方法,这个方法底层会调用SQLParser组件去生成一...原创 2019-01-22 21:52:30 · 867 阅读 · 0 评论 -
Spark之RDD与DataFrame互相转换
在Spark中RDD转换为DataFrame一共有两种方法。一种是基于一个封装数据的类去转换,另一种是通过结构类型去转换,下面分别介绍。 基于封装数据的类去转换(反射方式)Java版本这种方法是底层基于类的反射机制去实现的,为了封装数据我们首先需要一个封装数据的类也就是JavaBean。然后去构造一个JavaRDD<JavaBean>,然后调用方法去构造DataFram...原创 2019-01-17 09:46:21 · 858 阅读 · 1 评论 -
Spark之Worker工作原理
Spark之Worker工作原理当一个Spark上的Application要启动的时候,Master就会发送使用调度算法给Application分配资源,也就是将Application所需要的资源分摊到Worker上面以保证分布式的计算。同时Master还会给Worker发送消息让它去启动Driver(Yarn-Client模式下),和Executor。同时Executor的反向注册与Driv...原创 2019-01-27 16:27:54 · 1257 阅读 · 0 评论 -
Hadoop之HDFS基本原理
Hadoop之HDFSHDFS简介HDFS是Hadoop的三大组件之一,用马士兵老师的话来说他就是一块分余展(分布式,冗余数据,可扩展)的大硬盘。它以数据节点的方式来存储数据,从逻辑上来说他分为NameNode和DataNode,这些节点都是用来存放数据的。其中NameNode中存放的是元数据,也就是一些文件与数据块的映射以及数据块与DataNode之间的映射(类比于操作系统中的目录文件)...原创 2018-11-11 21:58:57 · 881 阅读 · 0 评论 -
Hadoop之MapReduce工作原理
Map阶段①输入分片(inputsplit),这个时候也就是输入数据的时候,这时会进行会通过内部计算对数据进行逻辑上的分片。默认情况下这里的分片与HDFS中文件的分块是一致的。每一个逻辑上的分片也就对应着一个mapper任务。②Mapper将切片的数据输入到map函数中进行处理。③Buffer函数将结果输出首先放入buffer(缓冲区)中从而为后面的操作(也就是写入硬盘)做准备。这...原创 2018-11-15 19:12:02 · 578 阅读 · 0 评论 -
Flume基本原理
Flume入门综述Flume是一个日志采集工具。具体来说它是一个分布式的能够从不同来源收集、聚集、日志信息用以集中管理的系统。他的核心思想就是从不同的数据源(比如说远程的http请求,监听远程的日志文件,当然也有可能是远程的程序发出的序列化数据)获得数据然后放入数据中转站,然后不同的数据中转站之间可以进行相互连接构成一个中转站网,最后我们可以将一根管子通到中转站上的任何一个节点来接收数据。我们...原创 2018-11-23 21:27:41 · 476 阅读 · 0 评论 -
Hadoop之Yarn的基本原理
Yarn的基本架构与运行概述Yarn(Yet Another Resource Negotiator)资源协调者,它是Hadoop生态圈中的三大组件之一,主要负责资源的调度。它与其他的两个组件相互独立也就是Yarn可以运行在其他的文件系统之上,其他的计算框架也可以运行在Yarn上面。下图为它在生态圈中的地位。Yarn的架构Yarn主要是由ResourceManager,Node...原创 2018-11-19 17:23:41 · 441 阅读 · 0 评论 -
Hive基本原理(修订版)
Hive的本质是一个翻译器。它的任务就是将一种类SQL(HQL)的语句翻译成Mapreduce任务,通过执行Mapreduce任务来对海量数据仓库进行处理。从表面上来看它就是一个数据仓库能够查询与分析数据。它与Hadoop的关系如下图所示:与传统数据库相比Hive的主要特点为:①分析离线存储数据,不具有实时性②不支持事务,由于是历史数据所以没有必要去增删改。③不支持修改,由于是...原创 2018-11-22 22:17:36 · 394 阅读 · 0 评论 -
HBase基本原理
HBase概述HBase是一款基于HDFS做存储的,Zookeeper做调度的能够存储半结构化与非结构化数据的数据库。它不同于Hive它是一个真正的数据库产品,它的内部基于顺序IO与内存读写,能够非常高效的实现数据的增删改查。 HBase的总体架构 HBase有如下几个部件协调服务:HMaster:主要负责,给HRegionServer...原创 2018-11-29 21:43:07 · 851 阅读 · 0 评论 -
Hadoop容错恢复之纠删码
在HDFS中常见的容错恢复是副本机制,它会在部分文件丢失之后通过心跳机制发数据给NameNode然后寻找未丢失的副本,按照replication进行备份。这样的话会保证数据在绝大多数情况下不丢失。但是造成的问题就是这种机制使得Hadoop的空间利用率会很低。比如说在一个备份数量为3的情况下空间利用率仅为1/3,而从空间利用率这个维度来看的话用于容错恢复的纠删码机制表现的不错。在这里我斗胆说一句...原创 2018-11-28 20:54:20 · 1096 阅读 · 0 评论 -
大数据开发实习面试经验
笔者的面经在牛客网上:https://www.nowcoder.com/discuss/146733?toCommentId=2427869在这里只是作为一个过来人做一个自己准备面试的过程,大家都可以比我做的更好。(注:由于笔者没有进行很多的面试所以总结难免有过拟合的现象,但是笔者同时也研究了牛客上很多的大数据的面经,在这里仅作为参考)总的来说现在的一些互联网公司越来越注重面试者的基本素...原创 2018-12-06 09:15:17 · 4477 阅读 · 5 评论 -
Pig基本原理
Pig基本原理Pig是一款数据装载、处理、存储的工具。我们可以使用pig将数据装载到内存中成为一个关系,然后再通过PigLatin语言对数据进行操作,最后再将数据转换的结果存储到一个文件中。它的底层事实上是MR的任务,所以会具备MR的各个特性。Pig的组成Pig由两部分组成Pig Latin是Pig处理数据所用到的语言。 Pig运行的环境,在单机模式下运行环境下为JVM,在集群模...原创 2018-12-13 18:33:46 · 3297 阅读 · 4 评论 -
Spark之Spark内核工作流程
这是一个较为细粒度的Spark运行流程。我们写的Spark程序叫做Application。 Application会通过spark-submit来提交给Spark集群来运行。具体来说就是spark-submit会通过反射机制来创建和构造一个DriverActor进程出来。这里的Driver就是我们的驱动程序,它负责执行我们的代码,当然在执行代码的时候首先会初始化SparkContext。 ...原创 2019-01-14 16:25:28 · 739 阅读 · 2 评论 -
Spark之Master主备切换
主备切换发生的场景就是,Active的Master宕掉之后StandBy的Master担任主节点时发生的一系列流程。说白了也就是一个Master恢复的过程。具体的流程如下:首先来说Spark的主备切换可以基于两种机制。一种是基于文件系统的,一种是基于Zookeeper的。基于文件系统的切换要通过手动来完成,基于Zookeeper的系统的切换是自动进行的。 StandBy的Master使用持久...原创 2019-01-15 15:46:59 · 602 阅读 · 0 评论 -
Spark之Master注册机制
Spark之Master注册机制在Spark集群中只有向Master注册了的组件,这个组件才能够被Master管理起来。在Spark中只有Driver、Application、Worker会向Master注册自己。接下来我们逐一介绍。Woker注册到MasterWorker在启动之后就会像Master进行注册。首先Master会判断这个Woker的状态是否为DEAD(就是状态已经为DE...原创 2019-01-15 18:19:23 · 309 阅读 · 0 评论 -
Zookeeper基本原理
这时大数据技术栈的开端ZookeeperZookeeper是干什么的?Zookeeper是一个分布式协调框架,他可以①实现集群管理(由于它自身的集群通信机制比如说为每一个集群节点建立一个临时节点在这个节点down机之后临时节点会销毁),②集群的统一配置管理(由于它的数据一致性)③统一命名服务(由于它内部维护的znode树)的节点是不能够重复的。④实现分布式屏障(这个就像...原创 2018-11-07 20:47:48 · 287 阅读 · 0 评论