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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
实时计算 Flink 版,5000CU*H 3个月
简介: 参加冬季实战营第五期:轻松入门学习大数据。参加学习一下,教程很好,做笔记记录一下。本文记录冬季实战营第五期:轻松入门学习大数据程----动手实战-基于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的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
|
2月前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
2月前
|
人工智能 分布式计算 架构师
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
|
2月前
|
机器学习/深度学习 搜索推荐 算法
飞天大数据平台产品问题之AIRec在阿里巴巴飞天大数据平台中的功能如何解决
飞天大数据平台产品问题之AIRec在阿里巴巴飞天大数据平台中的功能如何解决
|
2月前
|
存储 机器学习/深度学习 数据采集
深入解析大数据核心概念:数据平台、数据中台、数据湖与数据仓库的异同与应用
深入解析大数据核心概念:数据平台、数据中台、数据湖与数据仓库的异同与应用
|
2月前
|
SQL 存储 分布式计算
MaxCompute 入门:大数据处理的第一步
【8月更文第31天】在当今数字化转型的时代,企业和组织每天都在产生大量的数据。有效地管理和分析这些数据变得至关重要。阿里云的 MaxCompute(原名 ODPS)是一个用于处理海量数据的大规模分布式计算服务。它提供了强大的存储能力以及丰富的数据处理功能,让开发者能够快速构建数据仓库、实时报表系统、数据挖掘等应用。本文将介绍 MaxCompute 的基本概念、架构,并演示如何开始使用这一大数据处理平台。
192 0
|
2月前
|
机器学习/深度学习 监控 大数据
Serverless 应用的监控与调试问题之Flink在整个开源大数据生态中应该如何定位,差异化该如何保持
Serverless 应用的监控与调试问题之Flink在整个开源大数据生态中应该如何定位,差异化该如何保持
|
2月前
|
SQL 分布式计算 大数据
"大数据计算难题揭秘:MaxCompute中hash join内存超限,究竟该如何破解?"
【8月更文挑战第20天】在大数据处理领域,阿里云的MaxCompute以高效稳定著称,但复杂的hash join操作常导致内存超限。本文通过一个实例解析此问题:数据分析师小王需对两个共计300GB的大表进行join,却遭遇内存不足。经分析发现,单个mapper任务内存默认为2GB,不足以支持大型hash表的构建。为此,提出三种解决方案:1) 提升mapper任务内存;2) 利用map join优化小表连接;3) 实施分而治之策略,将大表分割后逐一处理再合并结果。这些方法有助于提升大数据处理效率及稳定性。
54 0
|
2月前
|
SQL 分布式计算 大数据
"揭秘MaxCompute大数据秘术:如何用切片技术在数据海洋中精准打捞?"
【8月更文挑战第20天】在大数据领域,MaxCompute(曾名ODPS)作为阿里集团自主研发的服务,提供强大、可靠且易用的大数据处理平台。数据切片是其提升处理效率的关键技术之一,它通过将数据集分割为小块来优化处理流程。使用MaxCompute进行切片可显著提高查询性能、支持并行处理、简化数据管理并增强灵活性。例如,可通过SQL按时间或其他维度对数据进行切片。此外,MaxCompute还支持高级切片技术如分区表和分桶表等,进一步加速数据处理速度。掌握这些技术有助于高效应对大数据挑战。
68 0
|
1月前
|
存储 大数据 数据挖掘
【数据新纪元】Apache Doris:重塑实时分析性能,解锁大数据处理新速度,引爆数据价值潜能!
【9月更文挑战第5天】Apache Doris以其卓越的性能、灵活的架构和高效的数据处理能力,正在重塑实时分析的性能极限,解锁大数据处理的新速度,引爆数据价值的无限潜能。在未来的发展中,我们有理由相信Apache Doris将继续引领数据处理的潮流,为企业提供更快速、更准确、更智能的数据洞察和决策支持。让我们携手并进,共同探索数据新纪元的无限可能!
81 11

热门文章

最新文章

下一篇
无影云桌面