一. HDFS和MapReduce优缺点 1.HDFS的优势 HDFS的英文全称是 Hadoop Distributed File System,即Hadoop分布式文件系统,它是Hadoop的核心子项目.实际上,Hadoop中有一个综合性的文件系统抽象,它提供了文件系统实现的各类接口, 而HDFS只是这个抽象文件系统 的一种实现,但HDFS是各种抽象接口中应用最为广泛和最广为人知的一个. HDFS被设计成适合运行在通用和廉价硬件上的分布式文件系统.它和现有的分布式文件系统有很多共同点,但他和其…
下面结合具体的例子详述MapReduce的工作原理和过程. 以统计一个大文件中各个单词的出现次数为例来讲述,假设本文用到输入文件有以下两个: 文件1: big data offline data online data offline online data 文件2 hello data hello online hello offline 目标是统计这两个文件中各个单词的出现次数,很容易用肉眼算出各个词出现的次数: big:1 data:5 offline:3 online:3 hello:3…
1.背景介绍 Storm以及离线数据平台的MapReduce和Hive构成了Hadoop生态对实时和离线数据处理的一套完整处理解决方案.除了此套解决方案之外,还有一种非常流行的而且完整的离线和 实时数据处理方案.这种方案就是Spark.Spark本质上是对Hadoop特别是MapReduce的补充.优化和完善,尤其是数据处理速度.易用性.迭代计算和复杂数据分析等方面. Spark Streaming 作为Spark整体解决方案中实时数据处理部分,本质上仍然是基于Spark的弹性分布式数据集(Re…
1.Hive出现背景 Hive是Facebook开发并贡献给Hadoop开源社区的.它是建立在Hadoop体系架构上的一层SQL抽象,使得数据相关人员使用他们最为熟悉的SQL语言就可以进行海量数据的处理.分析和统计工作, 而不是必须掌握Java等编程语言和具备开发MapReduce程序的能力.Hive SQL实际上先被SQL解析器进行解析然后被Hive框架解析成一个MapReduce可执行计划,并按照该计划生成MapReduce任务后交给Hadoop集群处理. 由于Hive SQL是翻译为Map…
1.介绍 本节主要利用Stream SQL进行实时开发实战,回顾Beam的API和Hadoop MapReduce的API,会发现Google将实际业务对数据的各种操作进行了抽象,多变的数据需求抽象为三类: 离线的Map.Shuffle.Reduce以及 实时的ParDo.GroupByKey.Combine,这些抽象其实也对应了SQL的操作.SQL开发有如下几类: select操作:包括过滤.投影.表达式等. join操作:关联操作,包括和维度表关联以及窗口操作等. 聚合操作:全局group…
Storm是一个分布式.高容错.高可靠性的实时计算系统,它对于实时计算的意义相当于Hadoop对于批处理的意义.Hadoop提供了Map和Reduce原语.同样,Storm也对数据的实时处理提供了简单的 spout和bolt原语.Storm集群表面上看和Hadoop集群非常像,但Hadoop上面运行的是MapReduce的Job,而Storm上面运行的是topology(拓扑),它们非常不一样,比如一个MapReduce的Job最终会结束, 而一个Storm topology永远运行(除非显式杀…
4.大表join小表优化 和join相关的优化主要分为mapjoin可以解决的优化(即大表join小表)和mapjoin无法解决的优化(即大表join大表),前者相对容易解决,后者较难,比较麻烦. 首先介绍大表join小表优化.以销售明细表为例来说明大表join小表的场景. 假如供应商进行评级,比如(五星.四星.三星.二星.一星),此时因为人员希望能够分析各供应商星级的每天销售情况及其占比. 开发人员一般会写出如下SQL: select  seller_star, count(order_id)…
Hive SQL的各种优化方法基本 都和数据倾斜密切相关. Hive的优化分为join相关的优化和join无关的优化,从项目的实际来说,join相关的优化占了Hive优化的大部分内容,而join相关的优化又分为mapjoin可以解决的join优化和mapjoin无法解决的join优化. 1.数据倾斜 倾斜来自于统计学里的偏态分布.所谓偏态分布,即统计数据峰值与平均值不相等的频率分布,根据峰值小于或大于平均值可分为正偏函数和负偏函数,其偏离的程度可用偏态系数刻画. 对应分布式数据处理来说,希望数据…
1.Hive 表 DDL 1.1.创建表 Hive中创建表的完整语法如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS]  table_name [ (col_name data_type [COMMET col_comment], . . .)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], . . . )] [CLUSTERED BY (c…
4.聚合操作 4.1.group by 操作 group by操作是实际业务场景(如实时报表.实时大屏等)中使用最为频繁的操作.通常实时聚合的主要源头数据流不会包含丰富的上下文信息,而是经常需要实时关联相关 相关的维度表,并针对这些扩展的.丰富维度属性进行各种业务的统计. 在下面的实例中,订单流通过买家id关联了买家维度表,获取其所在省份信息,然后实时统计每天各个省份的iPhone销量信息. ---从源头接收订单实时流 create table test_order_stream ( gmt_c…
1.流计算SQL原理和架构 流计算SQL通常是一个类SQL的声明式语言,主要用于对流式数据(Streams)的持续性查询,目的是在常见流计算平台和框架(如Storm.Spark Streaming.Flink.Beam等)的底层API上, 通过使用简易通用的的SQL语言构建SQL抽象层,降低实时开发的门槛. 流计算SQL的原理其实很简单,就是在SQL和底层的流计算引擎之间架起一座桥梁---流计算SQL被用户提交,被SQL引擎层翻译为底层的API并在底层的流计算引擎上执行.比如对Storm 来说,…
1.Hadoop数据仓库架构设计 如上图. ODS(Operation Data Store)层:ODS层通常也被称为准备区(Staging area),它们是后续数据仓库层(即基于Kimball维度建模生成的实时表和维度表层,以及基于事实表和明细表 加工的汇总层数据)加工数据的来源,同时ODS层也存储着历史的增量和或全量数据. 数据仓库层(DW:Data Warehouse): 是Hadoop数据平台的主体内容.数据仓库层的数据是ODS层数据经过ETL清洗.转换.加载生成的.Hadoop数据仓…
5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优化方案. 5.1.问题场景 问题场景如下: A表为一个汇总表,汇总的是卖家买家最近N天交易汇总信息,即对于每个卖家最近N天,其每个买家共成交了多少单,总金额是多少,假设N取90天,汇总值仅取成交单数. A表的字段有:buyer_id.seller_id.pay_cnt_90day. B表为卖家基本信…
随着硬件水平的不断提高,需要处理数据的大小也越来越大.大家都知道,现在大数据有多火爆,都认为21世纪是大数据的世纪.当然我也想打上时代的便车.所以今天来学习一下大数据存储和处理. 随着数据的不断变大,数据的处理就出现了瓶颈:存储容量,读写速率,计算效率等等. google不愧是走在世界前列的大公司,为了处理大数据,google提出了大数据技术,MapReduce,BigTable和GFS. 这个技术给大数据处理带来了巨大的变革. 1.降低了大数据处理的成本,用PC机就可以处理大数据,而不需要采用…
撰写我对java后端开发工程师选择方向的想法,写给在java后端选择转方向的人 背景 看到一些java开发工程师,对java后端薪酬太悲观了.认为换去大数据领域就会高工资.觉得java后端没有前途.我从事java后端开发,对大数据领域工作有些了解,但不深入.本文描述一下我对java后端和是否转大数据开发的个人见解. 目的 分析大数据领域分类 分析大数据工作工资高的原因 分析造成觉得java后端开发不够前景的原因 java后端转大数据工作做什么 转去大数据领域的各类方向与java后端比较衡量 一.…
这一讲我们主要剖析MapReduce的原理机制和流程. “云计算分布式大数据Hadoop实战高手之路”之完整发布目录 云计算分布式大数据实战技术Hadoop交流群:312494188,每天都会在群中发布云计算实战性资料,欢迎大家加入! 关于MapReduce,你至少需要知道以下几点: 1,         MapReduce是运行于分布式文件系统之上的,在Hadoop中就是运行于HDFS之上的: 2,         MapReduce主要用于大规模数据的并行运算,这种大数据通过指1TB以上:…
这一讲主要深入使用HDFS命令行工具操作Hadoop分布式集群,主要是通过实验的配置hdfs-site.xml文件的心跳来测试replication具体的工作和流程. 通过HDFS的心跳来测试replication具体的工作机制和流程的PDF版本请猛击这里. 王家林的“云计算分布式大数据Hadoop实战高手之路”之完整发布目录 ,每天都会在群中发布云计算实战性资料,欢迎大家加入! 在王家林 第六讲Hadoop图文训练课程:使用HDFS命令行工具操作Hadoop分布式集群初体验中,我们配置了had…
HDFS HDFS是什么? Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System).它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统的区别也是很明显的.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用.HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的.HDFS在最开…
Vvio总共就一轮技术面+一轮HR面,技术面总体而言,比较宽泛,比较看中基础,面试的全程没有涉及简历上的东西(都准备好跟他扯项目了,感觉是抽取的题库...)具体内容如下: 1.熟悉Hadoop哪些组件? 答:hdfs.yarn.MapRedue.Hive 2.讲一讲yarn的调度过程? 答:blabla... 3.yarn的调度器有哪些? 答:FIFO.多队列分开调度.CapacityScheduler.FairScheduler...(当时没答全) 4.讲讲Hive内部表和外部表的区别? 答:…
本讲通过实验的方式讲解Hadoop文件系统的操作. “云计算分布式大数据Hadoop实战高手之路”之完整发布目录 云计算分布式大数据实战技术Hadoop交流群:312494188,每天都会在群中发布云计算实战性资料,欢迎大家加入! 首先我们看一些比较常用的Hadoop文件系统的操作命令: 第一个常用命令:hadoop fs –ls 例如使用以下命令是列出文件系统根目录下的文件和文件夹,具体效果如下图所示: 第二个常用命令:hadoop fs –mkidr 例如使用以下命令是在HDFS中的根目录下…
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机.平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题.图计算正在被广泛地应用于社交网络.电子商务,地图等领域.对于图计算的两个核心问题:图存储模式和图计算模型,Spark GraphX给出了近乎完美的答案, 而Spark GraphX作为图计算领域的屠龙宝刀,对Pregel  API的支持更是让Spark GraphX如虎添翼.Spark GraphX可以轻而易举的完成基于度分布…
HDFS分布式文件系统 文件系统的基本概述 文件系统定义:文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易. 文件名:在文件系统中,文件名是用于定位存储位置. 元数据(Metadata):保存文件属性的数据,如文件名,文件长度,文件所属用户组,文件存储位置等. 数据块(Block):存储文件的最小单元.对存储介质划分了固定的区域,使用时按这些区域分配使用. HDFS的概述 HDFS(Hadoop Distributed File System)基于Google发布的GFS论…
如今随着环境的改变,物联网.AI.大数据.人工智能等,是未来的大趋势,而大数据是这些基石,万物互联,机器学习都是大数据应用场景! 为什么要学习大数据?我们JAVA到底要不要转型大数据? 好比问一个程序员为什么要学编程! 大数据技术是未来科技的必备技能,在外行看来大数据就是噱头,华而不实,对于大数据技术来说"先是看不见,再是看不上,最后是跟不上".做技术的一定要跟上时代,做精当下,看见未来! 大数据,人工智能,可以说绝对是未来十年社会发展的风向标.生存法则变了, 你再不懂这些就彻底晚了!…
众所周知,很多语言技术已经在长久的历史发展中掩埋,这期间不同的程序员也走出的自己的发展道路. 有的去了解新的发展趋势的语言,了解新的技术,利用自己原先的思维顺利改变自己的title. 比如我自己,也都在往更高的技能走,我认为这是一个很聪明的想法,横向发展,拖宽自己的知识广度,未来或许就能把握更多的机遇! 所以做Java开发,除了Java还可以学什么?如何正确转型大数据,编程语言与大数据的关系? 企业级大数据项目的开发流程是:数据采集 → 数据清洗 → 数据存储 → 数据计算 → 数据分析 → 数…
Flink主要用来处理数据流,所以从抽象上来看就是对数据流的处理,正如前面大数据开发-Flink-体系结构 && 运行架构提到写Flink程序实际上就是在写DataSource.Transformation.Sink. DataSource是程序的数据源输入,可以通过StreamExecutionEnvironment.addSource(sourceFuntion)为程序 添加一个数据源 Transformation是具体的操作,它对一个或多个输入数据源进行计算处理,比如Map.Flat…
因公司战略以及业务拓展,收大量java攻城狮以及大数据开发攻城狮. 职位信息: java攻城狮: https://job.cnblogs.com/offer/56032 大数据开发攻城狮: https://job.cnblogs.com/offer/56033 欢迎博客园的XDJM自荐和推荐! 此招聘长期有效 欢迎留言!…
大数据在近两年可算是特别火,有很多人都想去学大数据,有java转大数据的,零基础学习大数据的.但是大数据真的好学吗. 我们先来了解一下什么是大数据. 大数据是指无法在一定时间内用常规软件工具对其内容进行抓取.管理和处理的数据集合.大数据技术,是指从各种各样类型的数据中,快速获得有价值信息的能力.适用于大数据的技术,包括大规模并行处理(MPP)数据库,数据挖掘电网,分布式文件系统,分布式数据库,云计算平台,互联网,和可扩展的存储系统. 以下是大数据的定义 大数据由巨型数据集组成,这些数据集大小常超…
FusionInsight大数据开发 FusionInsight HD是一个大数据全栈商用平台,支持各种通用大数据应用场景. 技能需求 扎实的编程基础 Java/Scala/python/SQL/shell常见命令 掌握FusionInsight 熟悉业务开发 大数据应用开发流程 业务分析和方案设计 应用开发 应用调试 应用部署 应用开发关键点 账号 安全认证 场景约束 应用开发指南--调试 常规手段 协助资料 保障团队 总结: 认证是应用开发的关键点,要根据业务需求,申请合适账号,完成安全认证…
详解Kafka: 大数据开发最火的核心技术   架构师技术联盟 2019-06-10 09:23:51 本文共3268个字,预计阅读需要9分钟. 广告 大数据时代来临,如果你还不知道Kafka那你就真的out了(快速掌握Kafka请参考文章:如何全方位掌握Kafka核心技术)!据统计,有三分之一的世界财富500强企业正在使用Kafka,包括所有TOP10旅游公司,7家TOP10银行,8家TOP10保险公司,9家TOP10电信公司等等. LinkedIn.Microsoft和Netflix每天都用…
1.Spark计算依赖内存,如果目前只有10g内存,但是需要将500G的文件排序并输出,需要如何操作? ①.把磁盘上的500G数据分割为100块(chunks),每份5GB.(注意,要留一些系统空间!) ②.顺序将每份5GB数据读入内存,使用quick sort算法排序. ③.把排序好的数据(也是5GB)存放回磁盘. ④.循环100次,现在,所有的100个块都已经各自排序了.(剩下的工作就是如何把它们合并排序!) ⑤.从100个块中分别读取5G/100=0.05 G入内存(100input bu…