大数据入门1:开源大数据平台

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
实时计算 Flink 版,1000CU*H 3个月
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 参加冬季实战营第五期:轻松入门学习大数据。参加学习一下,教程很好,做笔记记录一下。本文记录冬季实战营第五期:轻松入门学习大数据程----动手实战-基于EMR离线数据分析。

1. 大数据平台简介

数据量爆发式增长的今天,数字化转型成为IT行业的热点,数据需要更深度的价值挖掘,应对未来不断变化的需求。海量离线数据分析可以应用于多种商业系统环境,例如电商海量日志分析、用户行为画像分析、科研行业的海量离线计算分析任务等场景。

对于“大数据”(Big data)研究机构Gartner给出了这样的定义。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。

麦肯锡全球研究所给出的定义是:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。

在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。

2. 大数据组件

2.1 Hadoop

Hadoop起源于Apache Nutch项目,始于2002年,是Apache Lucene的子项目之一 。2004年,Google在“操作系统设计与实现”(Operating System Design and Implementation,OSDI)会议上公开发表了题为MapReduce:Simplified Data Processing on Large Clusters(Mapreduce:简化大规模集群上的数据处理)的论文之后,受到启发的Doug Cutting等人开始尝试实现MapReduce计算框架,并将它与NDFS(Nutch Distributed File System)结合,用以支持Nutch引擎的主要算法 。由于NDFS和MapReduce在Nutch引擎中有着良好的应用,所以它们于2006年2月被分离出来,成为一套完整而独立的软件,并被命名为Hadoop。到了2008年年初,hadoop已成为Apache的顶级项目,包含众多子项目,被应用到包括Yahoo在内的很多互联网公司 。

Java编写的支持PB级别数据存储与计算能力的大数据平台。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。

把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务。

image.png

2.2 Spark

Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架。

Scala语言开发的基于内存的新一代分布式开源大数据框架,支持离线,实时计算,也支持 SQL 语法以及机器学习的处理。

Spark是用来弥补基于MapReduce处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。

对比 MapReduce 和 Spark 异同,不过私以为 MapReduce 能做的 Spark 基本都可以做,除此以外 Spark 可以更优雅的控制计算过程。相比于 MapReduce 仅仅提供的 mapper, reducer 两个算子,Spark有更多好用的算子。

image.png

2.3 Hive

Hive最初是应Facebook每天产生的海量新兴社会网络数据进行管理和机器学习的需求而产生和发展的。

Java语言开发的基于Hadoop的一套离线数据处理系统,在HDFS之上提供了结构化的表数据的管理能力,提供类 SQL 的查询语法进行数据分析处理。

Hadoop的存储和计算都不友好,而且传统用户更熟悉Sql语句,于是在上面又包了一层,用户只用写SQL,本质是:将HQL转化成MapReduce程序。

image.png

2.4 Kafka

Apache Kafka最初由LinkedIn开发,并在2011年初开源。

由Scala和Java编写的Kafka是一种高吞吐量的分布式发布订阅消息系统,具有出色的性能和可靠性。

kafka的架构师jay kreps对于kafka的名称由来是这样讲的,由于jay kreps非常喜欢franz kafka,并且觉得kafka这个名字很酷,因此取了个和消息传递系统完全不相干的名称kafka,该名字并没有特别的含义。

kafka的诞生,是为了解决linkedin的数据管道问题,起初linkedin采用了ActiveMQ来进行数据交换,大约是在2010年前后,那时的ActiveMQ还远远无法满足linkedin对数据传递系统的要求,经常由于各种缺陷而导致消息阻塞或者服务无法正常访问,为了能够解决这个问题,linkedin决定研发自己的消息传递系统,当时linkedin的首席架构师jay kreps便开始组织团队进行消息传递系统的研发;

image.png

2.5 Flink

2008:柏林理工大学一个研究性项目Stratosphere,Next Generation Big Data Analytics Platform(目标是建立下一代大数据分析引擎);

2014-04-16,Stratosphere成为Apache孵化项目,从Stratosphere 0.6开始,正式更名为Flink。由Java语言编写;

针对流数据和批数据的分布式处理引擎,基于Apache Flink的商业化产品Ververica Platform构建的企业级大数据计算平台提供实时计算服务。

目前比较流行的大数据处理引擎Apache Spark,基本上已经取代了MapReduce成为当前大数据处理的标准。但是随着数据的不断增长,新技术的不断发展,人们逐渐意识到对实时数据处理的重要性。相对于传统的数据处理模式,流式数据处理有着更高的处理效率和成本控制能力。Flink 就是近年来在开源社区不断发展的技术中的能够同时支持高吞吐、低延迟、高性能的分布式处理框架。

image.png

2.6 Presto

Facebook2012年开发,2013年开源。Java语言编写的开源的分布式SQL查询引擎,适用于交互式查询分析。是一个运行在多台服务器上的分布式查询引擎,本身并不存储数据,但是可以接入多种数据源(Hive、Oracle、MySql、Kafka、Redis等),并且支持跨数据源的级联查询,比如:select * from a join b where a.id=b.id;,其中表a可以来自Hive,表b可以来自Mysql。

image.png

2.7 ClickHouse

ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的用于在线分析处理查询(OLAP :Online Analytical Processing)的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。ClickHouse的全称是Click Stream,Data WareHouse。

C++编写的开源OLAP分析引擎,主要特性:列式存储、MPP架构、支持SQL、实时的数据更新、支持索引等。

Elasticsearch最擅长的主要是完全搜索场景(where过滤后的记录数较少),在内存富裕运行环境下可以展现出非常出色的并发查询能力。但是在大规模数据的分析场景下(where过滤后的记录数较多),ClickHouse凭借极致的列存和向量化计算会有更加出色的并发表现,并且查询支持完备度也更好。ClickHouse的并发处理能力立足于磁盘吞吐,而Elasticsearch的并发处理能力立足于内存Cache,这使得两者的成本区间有很大差异,ClickHouse更加适合低成本、大数据量的分析场景,它能够充分利用磁盘的带宽能力。数据导入和存储成本上,ClickHouse更加具有绝对的优势。

image.png

2.8 Hudi

由Java和Scala编写的一种数据湖的存储格式,提供更新数据和删除数据的能力以及消费变化数据的能力。

Apache Hudi是一个Data Lakes的开源方案,Hudi是Hadoop Updates and Incrementals的简写,它是由Uber开发并开源的Data Lakes解决方案。

数据湖(Data Lake)和数据库、数据仓库一样,都是数据存储的设计模式。数据库和数据仓库会以关系型的方式来设计存储、处理数据。但数据湖的设计理念是相反的,数据仓库是为了保障数据的质量、数据的一致性、数据的重用性等对数据进行结构化处理。

了解过Hadoop的同学知道,基于Hadoop可以存储任意形式的数据。所以,很多时候数据湖会和Hadoop关联到一起。

数据湖和数据仓库是用于存储大数据的两种不同策略,最大区别是:数据仓库是提前设计好模式(schema)的,因为数据仓库中存储的都是结构化数据。而在数据湖中,不一定是这样的。数据湖中可以存储结构化和非结构化的数据,是无法预先定义好结构的。

2.9 Hbase

HBase是基于HDFS分布式文件系统去构建的。换句话说,HBase的数据其实也是存储在HDFS上的。那肯定有好奇宝宝就会问:HDFS和HBase有啥区别阿

HDFS是文件系统,而HBase是数据库,其实也没啥可比性。「你可以把HBase当做是MySQL,把HDFS当做是硬盘。HBase只是一个NoSQL数据库,把数据存在HDFS上」。HBase在HDFS之上提供了高并发的随机写和支持实时查询,这是HDFS不具备的。

所以Hbase更适合非结构化的数据存储;只要求静态数据的极速查询能力,Clickhouse则更好。

image.png

image.png

2.10 Hue

Hue是一个开源的Apache Hadoop UI系统,

由Cloudera Desktop演化而来,最后Cloudera公司将其贡献给Apache基金会的Hadoop社区,它是基于Python Web框架Django实现的。

方便的Web端管理工具。Hue是一个可快速开发和调试Hadoop生态系统。

Hue的用途:

访问HDFS和文件浏览

通过web调试和开发hive以及数据结果展示

查询solr和结果展示,报表生成

通过web调试和开发impala交互式SQL Query

spark调试和开发

Pig开发和调试

oozie任务的开发,监控,和工作流协调调度

Hbase数据查询和修改,数据展示

Hive的元数据(metastore)查询

MapReduce任务进度查看,日志追踪

创建和提交MapReduce,Streaming,Java job任务

Sqoop2的开发和调试

Zookeeper的浏览和编辑

数据库(MySQL,PostGres,SQlite,Oracle)的查询和展示

image.png

image.png

3. HDFS +Hive 基本操作

1. 上传数据到HDFS

本步骤将指导您如何将自建数据上传到HDFS。

1. 执行如下命令,创建HDFS目录。

hdfs dfs -mkdir -p /data/student

2. 上传文件到hadoop文件系统。

a.执行如下命令,创建u.txt文件。

#创建u.txt文件 vim u.txt

196  242  3  881250949 186  302  3  891717742 22  377  1  878887116 244  51  2  880606923 166  346  1  886397596 298  474  4  884182806 115  265  2  881171488 253  465  5  891628467 305  451  3  886324817 6  86  3  883603013 62  257  2  879372434 286  1014  5  879781125 200  222  5  876042340 210  40  3  891035994 224  29  3  888104457 303  785  3  879485318 122  387  5  879270459 194  274  2  879539794 291  1042  4  874834944 234  1184  2  892079237 119  392  4  886176814 167  486  4  892738452 299  144  4  877881320 291  118  2  874833878 308  1  4  887736532 95  546  2  879196566 38  95  5  892430094 102  768  2  883748450 63  277  4  875747401 160  234  5  876861185 50  246  3  877052329 301  98  4  882075827 225  193  4  879539727 290  88  4  880731963 97  194  3  884238860 157  274  4  886890835 181  1081  1  878962623 278  603  5  891295330 276  796  1  874791932 7  32  4  891350932 10  16  4  877888877 284  304  4  885329322 201  979  2  884114233 276  564  3  874791805 287  327  5  875333916 246  201  5  884921594 242  1137  5  879741196 249  241  5  879641194 99  4  5  886519097 178  332  3  882823437 251  100  4  886271884 81  432  2  876535131 260  322  4  890618898 25  181  5  885853415 59  196  5  888205088 72  679  2  880037164 87  384  4  879877127 290  143  5  880474293 42  423  5  881107687 292  515  4  881103977 115  20  3  881171009 20  288  1  879667584 201  219  4  884112673 13  526  3  882141053 246  919  4  884920949 138  26  5  879024232 167  232  1  892738341 60  427  5  883326620 57  304  5  883698581 223  274  4  891550094 189  512  4  893277702 243  15  3  879987440 92  1049  1  890251826 246  416  3  884923047 194  165  4  879546723 241  690  2  887249482 178  248  4  882823954 254  1444  3  886475558 293  5  3  888906576 127  229  5  884364867 225  237  5  879539643 299  229  3  878192429 225  480  5  879540748 276  54  3  874791025 291  144  5  874835091 222  366  4  878183381 267  518  5  878971773 42  403  3  881108684 11  111  4  891903862 95  625  4  888954412 8  338  4  879361873 162  25  4  877635573 87  1016  4  879876194 279  154  5  875296291 145  275  2  885557505 119  1153  5  874781198 62  498  4  879373848 62  382  3  879375537 28  209  4  881961214 135  23  4  879857765 32  294  3  883709863 90  382  5  891383835 286  208  4  877531942 293  685  3  888905170 216  144  4  880234639 166  328  5  886397722

c. 上传文件u.txt到hadoop文件系统。

hdfs dfs -put u.txt /data/student

3. 查看文件。

hdfs dfs -ls /data/student

image.png

4. 使用hive创建表

本步骤将指导您如何使用hive创建数据表,并使用hadoop文件系统中的数据加载到hive数据表中。

1. 执行如下命令,登录hive数据库。

hive

2. 创建user表。

CREATE TABLE emrusers (    userid INT,    movieid INT,    rating INT,    unixtime STRING )    ROW FORMAT DELIMITED    FIELDS TERMINATED BY '\t'    ;

image.png

3. 执行如下命令,从hadoop文件系统加载数据到hive数据表。

LOAD DATA INPATH '/data/student/u.txt' INTO TABL

5. 对表进行操作

本步骤将指导您如何使用hive对数据表进行查询等操作。

1. 查看5行表数据。

select * from emrusers limit 5;

image.png

2. 查询数据表中有多少条数据。

select count(*) from emrusers;

返回结果如下,您可以看到您数据表中一共有多少数据,

image.png

3. 查询数据表中评级最高的三个电影。

select movieid,sum(rating) as rat from emrusers group by movieid order by rat desc limit 3;

返回结果如下,您可以看到您数据表中评级最高的三个电影。

image.png

参考:

大数据——百度百科

基于EMR离线数据分析

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
2月前
|
SQL 人工智能 分布式计算
ODPS十五周年实录|构建 AI 时代的大数据基础设施
本文根据 ODPS 十五周年·年度升级发布实录整理而成,演讲信息如下: 张治国:阿里云智能集团技术研究员、阿里云智能计算平台事业部 ODPS-MaxCompute 负责人 活动:【数据进化·AI 启航】ODPS 年度升级发布
127 9
|
2月前
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
870 36
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
4月前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据存储计算服务:MaxCompute
阿里云MaxCompute是快速、全托管的TB/PB级数据仓库解决方案,提供海量数据存储与计算服务。支持多种计算模型,适用于大规模离线数据分析,具备高安全性、低成本、易用性强等特点,助力企业高效处理大数据。
185 0
|
2月前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
174 1
|
4月前
|
数据采集 分布式计算 大数据
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
113 1
|
3月前
|
SQL 分布式计算 大数据
SparkSQL 入门指南:小白也能懂的大数据 SQL 处理神器
在大数据处理的领域,SparkSQL 是一种非常强大的工具,它可以让开发人员以 SQL 的方式处理和查询大规模数据集。SparkSQL 集成了 SQL 查询引擎和 Spark 的分布式计算引擎,使得我们可以在分布式环境下执行 SQL 查询,并能利用 Spark 的强大计算能力进行数据分析。
|
5月前
|
存储 缓存 分布式计算
OSS大数据分析集成:MaxCompute直读OSS外部表优化查询性能(减少数据迁移的ETL成本)
MaxCompute直读OSS外部表优化方案,解决传统ETL架构中数据同步延迟高、传输成本大、维护复杂等问题。通过存储格式优化(ORC/Parquet)、分区剪枝、谓词下推与元数据缓存等技术,显著提升查询性能并降低成本。结合冷热数据分层与并发控制策略,实现高效数据分析。
124 2
|
5月前
|
人工智能 分布式计算 大数据
构建AI时代的大数据基础设施-MaxCompute多模态数据处理最佳实践
本文介绍了大数据与AI一体化架构的演进及其实现方法,重点探讨了Data+AI开发全生命周期的关键步骤。文章分析了大模型开发中的典型挑战,如数据管理混乱、开发效率低下和运维管理困难,并提出了解决方案。同时,详细描述了MaxCompute在构建AI时代数据基础设施中的作用,包括其强大的计算能力、调度能力和易用性特点。此外,还展示了MaxCompute在多模态数据处理中的应用实践以及具体客户案例,最后提供了体验MaxFrame解决方案的方式。
523 2
|
4月前
|
人工智能 分布式计算 大数据
探索 ODPS:大数据时代的得力助手
在大数据蓬勃发展、 AI 技术席卷各行业的当下,阿里云 ODPS 作为大数据平台体系,凭借其强大的功能和广泛的应用,为众多从业者和企业带来了深远的影响。我有幸深入使用 ODPS,从中收获颇丰。
97 0
|
7月前
|
数据采集 数据可视化 大数据
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
147 6

热门文章

最新文章

下一篇
开通oss服务