MapReduce

真正让你明白Hive调优系列3:笛卡尔乘积,小表join大表,Mapjoin等问题

≡放荡痞女 提交于 2020-08-14 03:17:13
0.Hive中的优化分类 真正想要掌握Hive的优化,要熟悉相关的MapReduce,Yarn,hdfs底层源码,明晰Hive的底层执行流程。真正让你明白Hive调优系列,会征对下面分类逐一分析演示。 大类1:参数优化 文件输入前看是否需要map前合并小文件 控制map个数,根据实际需求确认每个map的数据处理量,split的参数等 Map输出是否需要启动压缩,减少网络传输,OOM处理等 控制redcue个数,控制每个reduce的吞吐量,OOM处理等 是否将common-join转换成map-join处理策略 文件输出是否需要启动小文件合并策略 其他相关参数的配置:如严格模式,JVM重用,列剪切等 大类2:开发中优化 数据倾斜,这个是Hive优化的重头戏。出现的原因是因为出现了数据的重新分发和分布,启动了redcue。Hive中数据倾斜分类:group by ,count(distinct)以及join产生的数据倾斜(当然一些窗口函数中用了partition by一会造成数据倾斜) j oin相关的优化 :分类大表join大表,小表join大表的优化 代码细节优化分类 : 比如去重用group by替代distinct ; 多表关联,先进行子查询后再进行关联 ;表关联时一定要在子查询里过滤掉NULL值,避免数据倾斜; 不要对一个表进行重复处理,多使用临时表

大数据实践解析(下):Spark的读写流程分析

旧巷老猫 提交于 2020-08-14 01:57:30
导读: 众所周知,在大数据/数据库领域,数据的存储格式直接影响着系统的读写性能。spark是一种基于内存的快速、通用、可扩展的大数据计算引擎,适用于新时代的数据处理场景。在“ 大数据实践解析(上):聊一聊spark的文件组织方式 ”中,我们分析了spark的多种文件存储格式,以及分区和分桶的设计。接下来,本文通过简单的例子来分析在Spark中的读写流程,主要聚焦于Spark中的高效并行读写以及在写过程中如何保证事务性。 1、文件读 如何在Spark中做到高效的查询处理呢?这里主要有两个优化手段: 1)减少不必要的数据处理。数据处理涉及文件的IO以及计算,它们分别需要耗费大量的IO带宽和CPU计算。在实际的生产环境中,这两类资源都是有限的,同时这些操作十分耗时,很容易成为瓶颈,所以减少不必要的数据处理能有效提高查询的效率; 以下面的查询为例: spark.read.parquet("/data/events") .where("year = 2019") .where("city = 'Amsterdam'") .select("timestamp") 由于在events表中按照year字段做了分区,那么首先通过 year 字段我们就可以过滤掉所有year字段不为 2019 的分区: 因为文件是parquet的文件格式,通过谓词下推可以帮助我们过滤掉 city 字段不是

大数据就业前景如何?现在学习大数据已经晚了吗?

て烟熏妆下的殇ゞ 提交于 2020-08-13 16:30:14
  大数据就业 前景如何?现在学习大数据已经晚了吗?作为初入社会的大学生,或者想改变环境转行的同学,看到大数据技术开发者的高薪资都想进入这个行业,但是现在大数据技术依然想之前那样火爆吗?是不是学习了大数据技术就可以获得高薪呢?   大数据从最开始的概念兴起,到现在各大互联网公司逐步推广使用。已经逐渐成熟,目前营销、电商、教育领域等等对大数据的应用已经初见效果。大数据也从最开始的概念过渡到实际应用领域。对技术人员的招聘也更加趋于理性。所以并非大数据技术不再火爆,而是企业对于大数据从业人员的要求提高了。   根据招聘网站显示,目前大数据工作招聘需求,薪资普遍稳定在15-30K之间。其中目前刚入行的大数据工程师平均薪资在1万左右,而随着工作时间的增加,3~5年经验的大数据工程师的薪资待遇将达到3万元左右。   据相关机构统计,未来的3~5内大数据人才的缺口将达到150万,而且随着大数据的发展,人才缺口将不断扩大,所以大数据不管是目前还是未来长期都将是紧缺人才,受到各大互联网企业的关注。   如果你想投入大数据的怀抱,但却苦于不知如何下手。而当你准备学习大数据技术时,你可以了解一下博斌去计算大数据课程,主要是针对有一定编程开发经验的学员研发的课程。从大数据基础增强开始,内容精准聚焦大数据开发过程中必备的离线数据分析、实时数据分析和内存数据计算等重要内容;涵盖了大数据体系中几乎所有的核心技术

初识Hive

China☆狼群 提交于 2020-08-13 08:29:34
结合其他同学和自己的笔记总结如下 什么是hive? 基于Hadoop的开源的数据仓库工具,用于处理海量结构化数据。 Hive把HDFS中结构化的数据映射成表。 Hive通过把HiveSQL进行解析和转换,最终生成一系列在hadoop上运行的mapreduce任务,通过执行这些任务完成数据分析与处理。 Hive与传统数据库的比较 由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述Hive和数据库的差异。数据库可以用在Online的应用中,但是Hive是为数据仓库而设计的,清楚这一点,有助于从应用角度理解Hive的特性。 1.查询语言 由于 SQL被广泛的应用在数据仓库中,因此,专门针对 Hive的特性设计了类 SQL的查询语言 HQL。熟悉 SQL开发的开发者可以很方便的使用 Hive进行开发。 2.数据存储位置 Hive 是建立在 Hadoop之上的,所有 Hive的数据都是存储在 HDFS中的。而数据库则可以将数据保存在块设备或者本地文件系统中。 3.数据格式 Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\t”、”\x001″)、行分隔符(”\n”)以及读取文件数据的方法

Hive的压缩存储和简单优化

戏子无情 提交于 2020-08-13 06:42:34
一、Hive的压缩和存储 1,MapReduce支持的压缩编码 压缩格式 工具 算法 文件扩展名 是否可切分 对应的编码/解码器 DEFLATE 无 DEFLATE .deflate 否 org.apache.hadoop.io.compress.DefaultCodec Gzip gzip DEFLATE .gz 否 org.apache.hadoop.io.compress.GzipCodec bzip2 bzip2 bzip2 .bz2 是 org.apache.hadoop.io.compress.BZip2Codec LZO lzop LZO .lzo 是 com.hadoop.compression.lzo.LzopCodec Snappy 无 Snappy .snappy 否 org.apache.hadoop.io.compress.SnappyCodec 2,文件压缩格式:   TEXTFILE和SEQUENCEFILE的存储格式都是基于 行式存储 的;   ORC和PARQUET是基于 列式存储 的。 a> TextFile格式:    默认格式,数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使用,但使用Gzip这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。 b> Orc格式:    Hive 0

kylin 安装相关

亡梦爱人 提交于 2020-08-13 05:45:58
su hdfs 使用hdfs安装防止创建hdfs目录权限问题 tar -zxvf apache-kylin-3.1.0-bin-hadoop3.tar.gz hive添加自定义参数 hive-site新增自定义参数 <property> <name>hive.security.authorization.sqlstd.confwhitelist</name> <value>mapred.*|hive.*| mapreduce.*|spark.*</value> </property> <property> <name>hive.security.authorization.sqlstd.confwhitelist.append</name> <value>mapred.*| hive.*|mapreduce.*|spark.*</value> </property> ./check-env.sh 检查环境 ./kylin.sh start 启动脚本 ./kylin.sh stop 停止脚本 1.执行./sample.sh 错误 erro Cannot modify dfs.replication at runtime 解决方法 https://www.jianshu.com/p/ef383f6b91cc 修改conf/kylin_hive_conf.xml 注释掉dfs

谈谈Hadoop MapReduce和Spark MR实现

北战南征 提交于 2020-08-12 20:16:28
谈谈MapReduce的概念、Hadoop MapReduce和Spark基于MR的实现 什么是MapReduce? MapReduce是一种分布式海量数据处理的编程模型,用于大规模数据集的并行运算。 有以下几个特点: 分而治之,并行处理。 抽象了map和reduce的计算流程,对于分布式存储的数据可以并行的进行map处理,之后在reduce端对map结果进行汇总。 移动计算而非移动数据。 数据的计算传输需要大量的磁盘和网络IO。MapReduce会尽量在数据存储的节点执行计算,以减少不必要的开销。 Hadoop MapReduce 我们常说的MapReduce就是Hadoop MapReduce。 Hadoop MapReduce作业被分成 一系列运行在分布式集群中的map任务和reduce任务 ,每个任务都工作在被指定的小的数据自己上,因此负载是遍布集群中各个节点上的。 map任务负责 数据的载入、解析、转换和过滤。MapReduce作业的输入是一系列储存在HDFS中的文件。map任务的输出被称为中间键和中间值,会被发送到reduce端进行后续处理。 每个 reduce任务负责 处理map任务输出结果的一个子集。MapReduce确保每个reduce的输入都是按键排序的。 系统执行排序、将map输出作为输入传递给reduce的过程称为 shuffle

连载:阿里巴巴大数据实践—数据开发平台

烂漫一生 提交于 2020-08-12 13:46:03
数据只有被整合和计算,才能被用于洞察商业规律,挖掘潜在信息,从而实现大数据价值,达到赋能于商业和创造价值的目的。面对海量的数据和复杂的计算,阿里巴巴的数据计算层包括两大体系: 数据存储及计算平台(离线计算平台MaxCompute和实时计算平台StreamCompute)、数据整合及管理体系(OneData) 。 阿里数据研发岗位的工作大致可以概括为: 了解需求→模型设计→ETL开发→测试→发布上线→日常运维→任务下线 。与传统的数据仓库开发(ETL)相比,阿里数据研发有如下几个特点: 业务变更频繁——业务发展非常快,业务需求多且变更频繁; 需要快速交付——业务驱动,需要快速给出结果; 频繁发布上线——迭代周期以天为单位,每天需要发布数次; 运维任务多——在集团公共层平均每个开发人员负责上百多个任务; 系统环境复杂——阿里平台系统多为自研,且为了保证业务的发展,平台系统的迭代速度较快,平台的稳定性压力较大。 通过统一的计算平台(MaxCompute)、统一的开发平台、统一的数据模型规范和统一的数据研发规范,可以在一定程度上解决数据研发的痛点。 本文主要介绍MaxCompute和阿里巴巴内部基于MaxCompute的大数据开发套件,并对在数据开发过程中经常遇到的问题和相关解决方案进行介绍。 1、统一计算平台

上海宝付Hadoop数据操作系统YARN全解析

Deadly 提交于 2020-08-12 04:38:46
Hadoop YARN的生态系统 为了能够对集群中的资源进行统一管理和调度,Hadoop 2.0引入了数据操作系统YARN。YARN的引入,大大提高了集群的资源利用率,并降低了集群管理成本。首先,YARN允许多个应用程序运行在一个集群中,并将资源按需分配给它们,这大大提高了资源利用率,其次,YARN允许各类短作业和长服务混合部署在一个集群中,并提供了容错、资源隔离及负载均衡等方面的支持,这大大简化了作业和服务的部署和管理成本。 YARN总体上采用master/slave架构,如图1所示,其中,master被称为ResourceManager,slave被称为NodeManager,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的Container。由于不同的ApplicationMaster被分布到不同的节点上,并通过一定的隔离机制进行了资源隔离,因此它们之间不会相互影响。 YARN中的资源管理和调度功能由资源调度器负责,它是Hadoop YARN中最核心的组件之一,是ResourceManager中的一个插拔式服务组件

架构层面调优之压缩整合hive的使用

僤鯓⒐⒋嵵緔 提交于 2020-08-11 23:51:42
//创建数据库 create database interview; //使用表 use interview; //创建表 create table page_views( track_time string, url string, session_id string, referer string, ip string, end_user_id string, city_id string ) row format delimited fields terminated by '\t' ; //加载数据 load data local inpath '/home/hadoop/data/page_views.dat' overwrite into table page_views; //查询数据 select * from page_views limit 10; 查看表在hdfs上的大小(未压缩前) desc formatted page_views; 位置在hdfs://node002/9000/user/hive/warehourse/interview.db/page_views hadoop fs -du -s -h hdfs://node002/9000/user/hive/warehourse/interview.db/page_views;