Apache ORC

刚哥谈架构(六)-大数据的文件存储

喜欢而已 提交于 2020-04-26 15:34:27
上一次我们谈到了各种类型的数据库,今天我们来谈谈在大数据,尤其是Hadoop栈下的数据和文件的存储。 我们知道为了解决大数据的存储和处理问题,google最先设计了推出了Map/Reduce的算法,而hadoop就是Google的map/reduce的开源实现。Hadoop主要由分布式的文件系统HDFS(参考Google的GFS)和Map/Reduce计算这两块。但随着Spark等更强大的计算引擎的出现,很少再有人使用Hadoop的Map/Reduce来做计算了,但是对于海量数据/文件的存储,除了HDFS,还真没有更多更好的选择。所以我们就来看看在Hadoop下,文件存储的各种选项。 原始文本文件 首先,我们什么都不需要做,HDFS提供分布式的文件存储,那么我们就直接把原始的文本文件存储在HDFS上就好了。通常我们会使用诸如txt,csv,json,xml等文本格式的文件存储在HDFS上,然后由各种计算引擎加载,计算。 HDFS是按照块来存储文件的,缺省的设置一个块的大小是64M,那么假定我的文本文件是1G,它会被分成16个分区,由计算引擎(Spark,Map/Reduce)来并行的处理,计算。 使用文本格式的主要问题是: 占用空间大 处理时有额外的序列化反序列化的开销,例如把日志中的文本‘12’转化为数字的12 所以这里就引入了两个解决方案: 压缩。 压缩是使用计算资源来换取存储

记一次私有云向阿里adb导数

◇◆丶佛笑我妖孽 提交于 2020-04-16 12:31:44
【推荐阅读】微服务还能火多久?>>> 1、背景 刚到新公司不久,领导安排了一个组件调研的数据支持工作。 简单说就是从私有云中的数据导出千万级数据量到adb中,为QuickBI调研提供支持。 adb是阿里提供的一个类似mysql的服务,整个任务可以抽象成:从分布式系统向关系型数据库同步数据,可以归类到ETL工作中。 2、问题 首次接触阿里云相关的组件,需要熟悉相关组件的使用。 leader提出了用sqoop进行处理,但是私有云中未安装。 同事提出历史方案,通过将数据上传到oss,利用adb中类似hive外部表的特性进行数据传输。 3、实施方案 因为有了大数据相关的经验,阿里云的相关组件,上手还是比较快的。 利用sqoop工具 由于是第一次安装sqoop,安装过程中对linux的操作更熟悉了一些,对私有云组件的安装情况有个快速的了解。 在使用sqoop中遇到几个问题: 集群客户端节点无法连接到adb --- 经排查是未将客户端ip添加到adb白名单引起的。处理方案:找运维添加白名单。 由于adb提供的服务地址不是ip地址,所以遇到了数据库url解析异常问题 处理方案:通过 ping 相应的域名获取到ip地址,替换原有url服务地址。 运行修改后的脚本,任务还是不能顺利执行,通过查找任务对应的堆栈信息,得到下面的信息: 超时!?那增加数据库的超时时间和socket超时时间。结果是好的

Spark-SQL adaptive 自适应框架

人盡茶涼 提交于 2020-04-06 17:35:02
一、自适应框架能解决什么问题 1、目前SparkSQL中reduce阶段的task个数取决于固定参数spark.sql.shuffle.partition(默认值200),一个作业一旦设置了该参数,它运行过程中的所有阶段的reduce个数都是同一个值。 而对于不同的作业,以及同一个作业内的不同reduce阶段,实际的数据量大小可能相差很大,比如reduce阶段要处理的数据可能是10MB,也有可能是100GB, 如果使用同一个值对实际运行效率会产生很大影响,比如10MB的数据一个task就可以解决,如果spark.sql.shuffle.partition使用默认值200的话,那么10MB的数据就要被分成200个task处理,增加了调度开销,影响运行效率。 SparkSQL自适应框架可以通过设置shuffle partition的上下限区间,在这个区间内对不同作业不同阶段的reduce个数进行动态调整。 通过区间的设置,一方面可以大大减少调优的成本(不需要找到一个固定值),另一方面同一个作业内部不同reduce阶段的reduce个数也能动态调整 参数如下: spark . sql . adaptive . enabled 默认false 自适应执行框架的开关 spark . sql . adaptive . minNumPostShufflePartitions 默认为1

Install hadoop, install hive, 及hive的使用

♀尐吖头ヾ 提交于 2019-12-05 14:10:02
hadoop , hive 安装过程和配置文件(附件)。 注意: hadoop Name Node未做ha. Hive, 还是基本的hive on MR, 未使用on tez, on spark, 未配置 LLAP、 HCatalog and WebHCat 。 安装完之后,以下是hive使用例子: 从本地系统导入文件 LOAD DATA LOCAL INPATH '/tmp/student.csv' OVERWRITE INTO TABLE student_csv 从hdfs文件中导入数据到表 LOAD DATA INPATH '/tmp/student.csv' OVERWRITE INTO TABLE student_csv 1 create csv file. student.csv 4,Rose,M,78,77,765,Mike,F,99,98,98 2 put it to hdfs. (这一步非必须, hive也可以从本地文件系统中导放) # hdfs dfs -put student.csv /input 3 create table in hive. create table student_csv(sid int, sname string, gender string, language int, math int, english int)row format

使用Data Lake Analytics + OSS分析CSV格式的TPC-H数据集

不想你离开。 提交于 2019-12-04 08:38:36
0. Data Lake Analytics(DLA)简介 关于Data Lake的概念,更多阅读可以参考: https://en.wikipedia.org/wiki/Data_lake 以及AWS和Azure关于Data Lake的解读: https://amazonaws-china.com/big-data/datalakes-and-analytics/what-is-a-data-lake/ https://azure.microsoft.com/en-us/solutions/data-lake/ 终于,阿里云现在也有了自己的数据湖分析产品: https://www.aliyun.com/product/datalakeanalytics 可以点击申请使用(目前公测阶段还属于邀测模式,我们会尽快审批申请),体验本教程的TPC-H CSV数据格式的数据分析之旅。 产品文档: https://help.aliyun.com/product/70174.html 1. 开通Data Lake Analytics与OSS服务 如果您已经开通,可以跳过该步骤。如果没有开通,可以参考: https://help.aliyun.com/document_detail/70386.html 进行产品开通服务申请。 2. 下载TPC-H测试数据集 可以从这下载TPC-H

(译)优化ORC和Parquet文件,提升大SQL读取性能

时间秒杀一切 提交于 2019-11-30 17:58:10
本文编译自IBM开发者社区,主要介绍了 HDFS 中小的 ORC 和 Parquet 文件的问题,以及这些小文件如何影响 Big SQL 的读取性能,并探索了为了提高读取性能,使用现有工具将小文件压缩为大文件的可能解决方案。 简介 众所周知,多个 Hadoop 小文件(定义为明显小于 HDFS 块大小的文件,默认情况下为 64MB )是 Hadoop 分布式文件系统( HDFS )中的一个大问题。 HDFS 旨在存储大量数据,理想情况下以大文件的形式存储。在 HDFS 中存储大量小文件,而不是存储较少的大文件,这在管理文件的目录树时给 NameNode 增加了额外的开销。此外, MapReduce 和其他读取 HDFS 文件的作业也会受到负面影响,因为它将涉及与 HDFS 的更多通信以获取文件信息。 小文件读取性能问题对于存储格式更为严重,在存储格式中,元数据被嵌入文件中以描述所存储的复杂内容。 IBM Db2 Big SQL 使用的两种常见文件存储格式是 ORC 和 Parquet ,这些文件格式以列格式存储数据,以优化读取和过滤列的子集。 ORC 和 Parquet 格式将有关列和行组的信息编码到文件本身中,因此,在对文件中的数据进行解压缩、反序列化和读取之前,需要处理元数据。由于这种开销,处理以逻辑方式捆绑在一起的这些格式的多个小型文件(例如,属于 Big SQL