大数据的三个发展方向,平台搭建/优化/运维/监控
优采云 发布时间: 2021-03-26 23:16大数据的三个发展方向,平台搭建/优化/运维/监控
指南:
第1章:了解Hadoop
第2章:更有效的WordCount
第3章:将数据放在Hadoop上的其他地方
第4章:在其他地方的Hadoop上获取数据
第5章:快点,我的SQL
第六章:一夫多妻制
第7章:越来越多的分析任务
第8章:我的数据必须是实时的
第9章:我的数据必须是外部数据
第十章:最高级别的机器学习
经常有初学者问,如果您想朝着大数据的方向发展,应该学习什么技术,什么样的学习途径,认为大数据很受欢迎,就业很好,薪水是多少?高...首先,如果您确定要朝这个方向发展,请首先考虑您过去的经验,专业和兴趣是什么。计算机专业操作系统,硬件,网络,服务器?软件专业-软件开发,编程,编写代码?还是数学或统计学专业(特别是对数据和数字感兴趣)?
实际上,这是在告诉您大数据的三个发展方向,平台构建/优化/运营与维护/监控,大数据开发/设计/架构,数据分析/挖掘。
首先谈谈大数据的4V特性:
如今,为了应对大数据的这些特征,越来越多的开源大数据框架变得越来越强大。让我先列出一些常见的问题:
文件存储:Hadoop HDFS,Tachyon,KFS
离线计算:Hadoop MapReduce,Spark
流式传输,实时计算:Storm,Spark流式传输,S 4、 Heron
K-V,NOSQL数据库:HBase,Redis,MongoDB
资源管理:YARN,Mesos
日志采集:水槽,抄写员,Logstash,基巴纳人
消息系统:Kafka,StormMQ,ZeroMQ,RabbitMQ
查询和分析:Hive,Impala,Pig,Presto,Phoenix,SparkSQL,Drill,Flink,Kylin,Druid
分布式协调服务:Zookeeper
集群管理和监视:Ambari,Ganglia,Nagios,Cloudera Manager
数据挖掘,机器学习:Mahout,Spark MLLib
数据同步:Sqoop
任务计划:Oozie
·····
第1章:了解Hadoop
1. 1学习百度和Google
无论您遇到什么问题,都请先搜索并自己解决。
Google的首选,如果找不到,请使用百度。
1. 2参考资料首选的官方文件
特别是对于入门而言,官方文件始终是第一选择。
我相信,参与这一领域的大多数人都是文化人。英语就可以了。如果您实在无法忍受,请参阅第一步。
1. 3让Hadoop首先运行
Hadoop可以被视为大数据存储和计算的发起者。现在,大多数开源大数据框架都依赖Hadoop或与Hadoop很好地兼容。
关于Hadoop,至少您需要弄清楚以下内容:
要自行构建Hadoop,请使用第一步和第二步使其运行。
建议先使用安装包的命令行进行安装,而不要使用管理工具进行安装。
另外:Hadoop 1. 0知道这一点,现在我们使用Hadoop 2. 0.
1. 4尝试使用Hadoop
1. 5了解他们的原理
MapReduce:如何分而治之;
HDFS:数据在哪里,什么是副本;
什么是纱,它能做什么;
NameNode到底在做什么;
ResourceManager到底在做什么;
1. 6自己编写一个MapReduce程序
模仿WordCount示例并自己编写一个WordCount程序(复制它),
打包并提交给Hadoop以运行。
如果您不懂Java,则可以使用Shell和Python。有一种叫做Hadoop Streaming的东西。
如果您能认真完成上述步骤,那么祝贺您,您的一只脚已踏进来。
第2章:更有效的WordCount
2. 1让我们学习一些SQL
如果您不了解数据库,请先学习使用SQL语句。
2. 2SQL版本WordCount
您在1. 6中写(或复制)了WordCount几行代码?
如果您使用SQL:
SELECT word,COUNT(1) FROM wordcount GROUP BY word;
这是SQL的魅力。编程需要数十行,甚至数百行代码,SQL可以在一句话中完成。使用SQL在Hadoop上处理和分析数据既方便,高效,易于使用,而且趋势更加明显。无论是离线计算还是实时计算,越来越多的大数据处理框架都在积极提供SQL接口。
2. 3安装和配置Hive
Hive被视为数据仓库工具。安装并不难。互联网上有许多教程。配置完成后,您可以正常输入Hive命令行。
2. 4尝试Hive
尝试在Hive中创建wordcount表,并在2. 2中运行SQL语句。查找仅在Hadoop WEB界面中运行的SQL任务。在1. 4中查看SQL查询的结果是否与MapReduce的结果一致。
显然用SQL编写,为什么在Hadoop WEB界面中看到MapReduce任务?
2. 5了解Hive的基本命令
创建和删除表;将数据加载到表中;从Hive表下载数据;并了解有关Hive语法和命令的更多信息。
如果认真并完全遵循第1章和第2章的步骤,则应具有以下技能和知识点:
0与Hadoop 2. 0之间的区别
MapReduce的原理(仍然是经典问题,文件大小为10G,内存为1G,如何使用Java程序计算10个最频繁的单词和次数);
HDFS读写数据流;将数据放入HDFS;从HDFS下载数据;
我可以编写一个简单的MapReduce程序,运行问题,知道在哪里查看日志;
能够编写简单的SELECT,WHERE,GROUP BY和其他SQL语句;
将Hive SQL转换为MapReduce的一般过程;
Hive中的常用语句:创建表,删除表,将数据加载到表中,进行分区,将表中的数据下载到本地;
从以上研究中,您了解到HDFS是Hadoop提供的分布式存储框架,可用于存储大量数据,而MapReduce是Hadoop提供的分布式计算框架,可用于统计HDFS Hive的分析是Hadoop上的SQL。 Hive提供了SQL接口。开发人员只需要编写简单易用的SQL语句。 Hive负责将SQL转换为MapReduce并提交给操作。
此时,您认为“大数据平台”是这样的:
那么问题是,如何将大量数据存储在HDFS上?
第3章:将数据放在Hadoop上的其他地方
在这里也可以称为数据采集,每个数据源的数据采集都将传输到Hadoop。
3. 1HDFS PUT命令
put命令也经常在实际环境中使用,通常与脚本语言(例如shell和python)一起使用。建议精通。
3. 2HDFS API
HDFS提供用于写入数据的API,并以编程语言将数据写入HDFS。 put命令本身也使用API。
在实际环境中,我通常自己编写较少的程序,并通常使用其他框架封装的方法使用API将数据写入HDFS。例如:Hive中的INSERT语句,Spark中的saveAsTextfile等。
您可以尝试理解其原理并尝试编写一些演示。
3. 3Sqoop
Sqoop是一个开放源代码框架,主要用于Hadoop / Hive与传统关系数据库Oracle / MySQL / SQLServer之间的数据交换。
就像Hive将SQL转换为MapReduce一样,Sqoop将您指定的参数转换为MapReduce并将其提交给Hadoop以运行,从而完成Hadoop与其他数据库之间的数据交换。
自行下载和配置Sqoop(首先建议使用Sqoop1,而Sqoop2更复杂)。
了解Sqoop的常用配置参数和方法。
使用Sqoop将数据从MySQL同步到HDFS;
使用Sqoop将数据从MySQL同步到Hive表;
PS:如果您在随后的选择中决定使用Sqoop作为数据交换工具,建议您精通该语言,否则,您可以理解并使用Demo。
3. 4水槽
Flume是一个分布式的大型日志采集和传输框架。由于“ 采集和传输框架”,它不适用于关系数据库数据采集和传输。 Flume可以从网络协议,消息系统,文件系统采集实时登录并将其传输到HDFS。因此,如果您的企业具有来自这些数据源的数据并且需要实时采集,那么您应该考虑使用Flume。
下载并配置Flume。使用Flume监视连续添加数据的文件,并将数据传输到HDFS;
PS:Flume的配置和使用更加复杂。如果您没有足够的兴趣和耐心,可以先跳过Flume。
3. 5 Ali开源DataX
之所以引入它,是因为公司客户当前使用的用于Hadoop和关系数据库之间的数据交换工具以前是基于DataX开发的,我觉得它非常易于使用。 DataX现在为3. 0版本,并支持许多数据源。您还可以在此基础上进行二次开发。
PS:如果有兴趣,您可以研究和使用它,并将其与Sqoop进行比较。
到目前为止,您的“大数据平台”应如下所示:
第4章:在其他地方的Hadoop上获取数据
之前,我介绍了如何将数据从数据源采集传输到Hadoop。将数据上传到Hadoop之后,可以使用Hive和MapReduce进行分析。接下来的问题是,如何将分析结果从Hadoop同步到其他系统和应用程序?
实际上,这里的方法与第3章中的方法基本相同。
4. 1HDFS GET命令
将HDFS上的文件获取到本地。需要精通。
4. 2HDFS API
原理与3. 2.
相同
4. 3Sqoop
原理与3. 3相同。
使用Sqoop完成HDFS上的文件到MySQL的同步;
使用Sqoop完成Hive表中的数据与MySQL的同步;
4. 4DataX
原理与3. 4
相同
此时,“您的大数据平台”应如下所示:
在完成第3章和第4章的过程之后,您应该具有以下技能和知识点:
到目前为止,对于大数据平台,您应该已经掌握了如何构建Hadoop集群,将数据采集放置在Hadoop上,使用Hive和MapReduce分析数据并将分析结果与其他数据源同步的方法。
下一个问题是Hive的使用越来越多,您会发现很多不愉快的地方,尤其是速度较慢的情况,
在大多数情况下,很明显,我的数据量很小,因此必须申请资源并启动MapReduce才能执行。
第5章:快点,我的SQL
事实上,每个人都发现Hive后端使用MapReduce作为执行引擎,这确实有点慢。因此,越来越多的SQL on Hadoop框架。据我了解,按照流行程度,最常用的是SparkSQL,Impala和Presto。这三个框架基于半内存或全内存,并提供SQL接口以快速查询和分析Hadoop。在数据上。
当前,我们的解决方案使用SparkSQL。至于为什么使用SparkSQL,原因可能如下:
5. 1关于Spark和SparkSQL
什么是Spark和什么是SparkSQL。
Spark的核心概念和术语说明。
SparkSQL与Spark之间的关系是什么,SparkSQL与Hive之间的关系是什么。
为什么SparkSQL的运行速度比Hive快。
参考:SparkSQL和Hive on Spark的比较
5. 2如何部署和运行SparkSQL
Spark有哪些部署模式?
如何在纱线上运行SparkSQL?
使用SparkSQL在Hive中查询表。
请参阅:Spark-lxw的大数据字段
PS:Spark不是一种可以在短时间内掌握的技术,因此建议您在了解Spark之后,可以从SparkSQL开始并逐步进行。
如果您已经认真完成了上述学习和练习,那么此时的“大数据平台”应如下所示:
第六章:一夫多妻制
实际上,我要谈论的是一个采集和多个数据消耗。
在实际的业务场景中,尤其是对于某些监视日志,我想实时了解日志中的一些指标(关于实时计算,我们将在下一章中介绍它们)。目前,虽然通过Flume 采集通过HDFS进行的分析速度太慢,但是Flume不能在短间隔内在HDFS上滚动文件,这会导致很多小文件。
为了满足一次性采集和多次使用数据的需求,我想在这里谈论Kafka。
6. 1关于卡夫卡
Kafka是一个高吞吐量的分布式发布和订阅消息传递系统,它可以在消费者规模上处理网站中的所有动作流数据。这种类型的操作(Web浏览,搜索和其他用户操作)是现代Web上许多社交功能的关键因素。由于吞吐量要求,通常通过处理日志和日志聚合来解析这些数据。
6. 2如何部署和使用Kafka
使用Kafka的独立部署,并成功运行内置的生产者和使用者示例。
使用Java程序编写和运行生产者和使用者程序。
Flume和Kafka的集成,使用Flume监视日志并将日志数据实时发送到Kafka。
对于Kafka,您可以参考:Kafka-lxw的大数据字段
此时,“大数据平台”应扩展为:
这时,使用Flume 采集的数据不直接传输到HDFS,而是首先传输到Kafka。卡夫卡中的数据可以同时由多个使用者使用,而使用者之一是将数据同步到HDFS。
摘要:
为什么Spark比MapReduce快。
使用SparkSQL代替Hive可以更快地运行SQL。
使用Kafka一次完成数据采集并消耗多次。
您可以编写程序来完善Kafka的生产者和消费者。
先前的研究已经掌握了大数据平台中数据的大多数技能采集,数据存储和计算,数据交换,并且每个步骤都需要一个任务(程序)来完成,并且每个任务都有他们之间的某种依赖。例如,数据计算任务只能在成功完成数据采集任务后才能开始运行。如果任务执行失败,则需要向开发和操作人员发送警报,并提供完整的日志以方便故障排除。
第7章:越来越多的分析任务
不仅分析任务,数据采集和数据交换也是一项一项的任务。其中一些任务会定期触发,而其他一些则需要其他任务触发。当平台中需要维护和运行数百或数千个任务时,仅使用crontab还是不够的。此时,需要一个调度和监视系统来完成此任务。调度和监视系统是整个数据平台的中央系统,类似于AppMaster,负责分配和监视任务。
7. 1个Apache Oozie
1.什么是Oozie?有什么功能?
2. Oozie可以安排哪些类型的任务(程序)?
3. Oozie支持哪些任务触发方法?
4.安装和配置Oozie。
7. 2其他开源任务计划系统
阿兹卡班
light-task-scheduler
阿里巴巴/宙斯
……
此时:
第8章:数据必须是实时的
在第6章中介绍Kafka时,我们提到了一些需要实时指标的业务场景。实时基本上可以分为绝对实时和准实时。绝对实时延迟要求通常以毫秒为单位,准实时延迟要求通常以秒为单位。 ,分钟级别。对于需要绝对实时的业务场景,Storm更常用,对于其他准实时业务场景,可以是Storm或Spark Streaming。当然,如果可以的话,您也可以编写自己的程序来做到这一点。
8. 1Storm
1.什么是风暴?可能的应用场景是什么?
2. Storm的核心元素是什么,每个角色扮演什么角色?
3. Storm的简单安装和部署。
4.自己编写演示程序,并使用Storm完成实时数据流计算。
8. 2Spark Streaming
1.什么是Spark Streaming,以及它与Spark的关系是什么?
2.比较Spark Streaming和Storm,两者的优缺点是什么?
3.使用Kafka + SparkStreaming完成用于实时计算的演示程序。
此时:
到目前为止,大数据平台的基础架构已经形成,包括数据采集,数据存储和计算(离线和实时),数据同步,任务调度和监视这些模块。接下来是时候考虑如何更好地向外界提供数据了。
第9章:数据为外部
通常提供外部(业务)数据访问,通常包括以下方面:
离线:例如,每天将前一天的数据提供给指定的数据源(DB,FILE,FTP)等;
可以使用Sqoop和DataX等脱机数据交换工具来提供脱机数据。
实时:例如,网站的在线推荐系统需要从数据平台实时获取用户的推荐数据,这需要非常低的延迟(在50毫秒内)。
根据延迟要求和实时数据查询需求,可能的解决方案是:HBase,Redis,MongoDB,ElasticSearch等。
OLAP分析:除了需要更标准的基础数据模型外,OLAP还要求查询的响应速度越来越高。可能的解决方案是:Impala,Presto,SparkSQL和Kylin。如果您的数据模型相对较大,那么Kylin是最佳选择。
即席查询:即席查询的数据是相对随机的,通常很难建立通用的数据模型。因此,可能的解决方案是:Impala,Presto,SparkSQL。
拥有这么多成熟的框架和解决方案,您需要根据业务需求和数据平台的技术架构选择合适的框架和解决方案。只有一个原则:更简单,更稳定,最好。
如果您已经很好地掌握了如何向外部(企业)提供数据,那么您的“大数据平台”应该看起来像这样:
第十章:最高级别的机器学习
我在这里没有得到太多联系。让我们来谈谈我们的业务场景应用程序。机器学习可以解决大约三种类型的问题:
分类问题:包括两个分类和多个分类,两个分类是为了解决预测问题,就像预测电子邮件是否为垃圾邮件一样;多重分类解决了文本的分类;
聚类问题:从用户搜索的关键词中,大致分类用户。