实习复习纲要-大数据

一. 数据倾斜以及解决办法
类似二八原理,大量的相同key被partition分配到一个分区里,造成了“一个人累死,其他人闲死”。
两种情况

  1. 变量值很少: 单个变量值的占比极大,常见的字段如性别、学历、年龄等。
  2. 变量值很多: 单个变量值的占比极小,常见的字段如收入、订单金额之类的。

Hadoop不在乎大数据量,但是数据倾斜是大问题。

解决方法:
1.增加JVM内存,适用于变量值很少的情况。这种情况下,往往只能通过硬件的手段来进行调优,增加jvm内存可以显著的提高运行效率;
2.增加reduce的个数,这适用于变量值非常多的情况,这种情况下最容易造成的结果就是大量相同key被partition到一个分区,从而一个reduce执行了大量的工作。这时候增加reduce的个数,计算的节点就多了,能减轻数据倾斜现象。
3.自定义分区,这需要用户自己继承partition类,指定分区策略,这种方式效果比较显著。
4.重新设计key,有一种方案是在map阶段时给key加上一个随机数,有了随机数的key就不会被大量的分配到同一节点(小几率),待到reduce后再把随机数去掉即可。
5.使用combiner合并。combinner是在map阶段,reduce之前的一个中间阶段,在这个阶段可以选择性的把大量的相同key数据先进行一个合并,可以看做是local reduce,然后再交给reduce来处理,减轻了map端向reduce端发送的数据量(减轻了网络带宽),也减轻了map端和reduce端中间的shuffle阶段的数据拉取数量(本地化磁盘IO速率);(hive.map.aggr=true)

二. 死锁
死锁产生的4个必要条件
互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。如果有其他进程请求该资源,只能等待。
请求和保持条件:当进程因请求新的资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
环路等待条件:在发生死锁时,必然存在一个进程–资源的环形链。

解决死锁基本方法:
1.以确定的顺序获得锁
比如a,b两个线程都想锁住自己,再锁住对方。这时规定只能以先a后b的顺序获得锁。
2.超时放弃
在等待锁超时之后,释放之前得到的所有锁。

原文链接:
https://blog.csdn.net/hd12370/article/details/82814348

三. 名词解释

  1. ETL(Extraction-Transformation-Loading)
    数据抽取,转换和加载

数据抽取:数据抽取是指把ODS(操作性数据)源数据抽取到DW(数据仓库)中,然后处理成展示给相关人员查看的数据。

数据转换、清洗:把不需要的和不符合规范的数据进行处理。

数据加载:数据拉取,清洗完之后,就需要展示了。一般是把清洗好的数据加载到mysql中,然后在各系统中使用,或者使用Tableau直接给相关人员展示。

  1. Cube(数据立方体)

由三个维度构成的OLAP立方体,立方体中包含了满足条件的cell(子立方块)值,这些cell里面包含了要分析的数据,称之为度量值。显而易见,一组三维坐标唯一确定了一个子立方。

多维数据模型是为了满足用户从多角度多层次进行数据查询和分析的需要而建立起来的基于事实和维的数据库模型,其基本的应用是为了实现OLAP(Online Analytical Processing)。

  1. OLAP(Online Analytical Processing)
    联机分析处理
    OLAP允许以一种称为多维数据集的结构,访问业务数据源经过聚合和组织整理后的数据。
    专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可以根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观而易懂的形式将查询结果提供给决策人员,以便他们准确掌握企业(公司)的经营状况。

  2. Spark
    计算引擎。它不是为了替代Hadoop而设计,而是为了配合Hadoop。Spark将数据一直缓存在内存中,因此比Hadoop快。因为Hadoop在一次MapReduce运算之后,会将运算结果从内存写入到磁盘中,下一次再从磁盘读取数据,这造成两次读写消耗。
    Spark计算的基石:RDD(Resilient Distributed Dataset)弹性分布式数据集。提供了方便的数据转换与求值方法。
    RDD操作分为两大类型:转换(transformation)和行动(action)
    转换:通过操作将一个RDD转换成另一个RDD
    行动:将一个RDD进行求值或者输出。

  3. Hadoop
    Hadoop是分布式数据计算框架,框架意味着是由多个产品组成的。Hadoop是开源的。
    HDFS和MapReduce是Hadoop的基础。
    HDFS(Hadoop Distribute File System)分布式文件系统,这个系统最大的作用就是可以存储海量的数据。HDFS的特性是高容错性,高吞吐量。
    MapReduce是一种编程模型,通用执行驱动引擎,用于大规模数据集的并行预算。MapReduce提供的是对分析的控制,而不是分析本身(一个调度系统)
    MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性。

Hadoop的其他组件:
Hive:基于Hadoop的数据仓库工具,将结构化的数据文件映射为数据库表。Hive使用类SQL语言,适用于关系型数据库。他可以将SQL语句转换为MapReduce程序。
HBase:
非关系型数据库,分布式存储数据库。仅能通过主键(row key)和主键的range来检索数据。特点:大,上百万列上亿行。稀疏:对于空的列不占用存储空间,因此表可以非常稀疏。
Pig:
负责Hadoop数据操作,它是一个数据分析引擎。将Pig Lation语句(处理大规模数据的脚本语言)翻译成MapReduce程序,以完成排序,过滤,求和,关联等操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值