1 大数据简介
大数据是这个时代最热门的话题之一。但是什么是大数据呢"color: #ff0000">2 Hadoop 介绍
Hadoop是一个解决大数据问题的分布式、可伸缩的框架。Hadoop是由Doug Cutting和Mark Cafarella开发的。Hadoop是用Java编写的。它可以安装在一组商用硬件上,并且可以在分布式系统上水平扩展。
在商品硬件上工作使它非常高效。如果我们的工作是在商品硬件,故障是一个不可避免的问题。但是Hadoop为数据存储和计算提供了一个容错系统。这种容错能力使得Hadoop非常流行。
Hadoop有两个组件:第一个组件是HDFS(Hadoop Distributed File System),它是一个分布式文件系统。第二个组件是MapReduce。HDFS用于分布式数据存储,MapReduce用于对存储在HDFS中的数据执行计算。
2.1 HDFS介绍
HDFS用于以分布式和容错的方式存储大量数据。HDFS是用Java编写的,在普通硬件上运行。它的灵感来自于谷歌文件系统(GFS)的谷歌研究论文。它是一个写一次读多次的系统,对大量的数据是有效的。HDFS有两个组件NameNode和DataNode。
这两个组件是Java守护进程。NameNode负责维护分布在集群上的文件的元数据,它是许多datanode的主节点。HDFS将大文件分成小块,并将这些块保存在不同的datanode上。实际的文件数据块驻留在datanode上。HDFS提供了一组类unix-shell的命令。但是,我们可以使用HDFS提供的Java filesystem API在更细的级别上处理大型文件。容错是通过复制数据块来实现的。
我们可以使用并行的单线程进程访问HDFS文件。HDFS提供了一个非常有用的实用程序,称为distcp,它通常用于以并行方式将数据从一个HDFS系统传输到另一个HDFS系统。它使用并行映射任务复制数据。
2.2 MapReduce介绍
计算的MapReduce模型最早出现在谷歌的一篇研究论文中。Hadoop的MapReduce是Hadoop框架的计算引擎,它在HDFS中对分布式数据进行计算。MapReduce已被发现可以在商品硬件的分布式系统上进行水平伸缩。它也适用于大问题。在MapReduce中,问题的解决分为Map阶段和Reduce阶段。在Map阶段,处理数据块,在Reduce阶段,对Map阶段的结果运行聚合或缩减操作。Hadoop的MapReduce框架也是用Java编写的。
MapReduce是一个主从模型。在Hadoop 1中,这个MapReduce计算由两个守护进程Jobtracker和Tasktracker管理。Jobtracker是处理许多任务跟踪器的主进程。Tasktracker是Jobtracker的从节点。但在Hadoop 2中,Jobtracker和Tasktracker被YARN取代。
我们可以使用框架提供的API和Java编写MapReduce代码。Hadoop streaming体模块使具有Python和Ruby知识的程序员能够编写MapReduce程序。
MapReduce算法有很多用途。如许多机器学习算法都被Apache Mahout实现,它可以在Hadoop上通过Pig和Hive运行。
但是MapReduce并不适合迭代算法。在每个Hadoop作业结束时,MapReduce将数据保存到HDFS并为下一个作业再次读取数据。我们知道,将数据读入和写入文件是代价高昂的活动。Apache Spark通过提供内存中的数据持久性和计算,减轻了MapReduce的缺点。
更多关于Mapreduce 和 Mahout 可以查看如下网页:
https://www.usenix.org/legacy/publications/library/proceedings/osdi04/tech/full_papers/dean/dean_html/index.html
https://mahout.apache.org/users/basics/quickstart.html
3 Apache Hive 介绍
计算机科学是一个抽象的世界。每个人都知道数据是以位的形式出现的信息。像C这样的编程语言提供了对机器和汇编语言的抽象。其他高级语言提供了更多的抽象。结构化查询语言(Structured Query Language, SQL)就是这些抽象之一。世界各地的许多数据建模专家都在使用SQL。Hadoop非常适合大数据分析。那么,了解SQL的广大用户如何利用Hadoop在大数据上的计算能力呢"_blank" href="https://cwiki.apache.org/confluence/display/Hive/Tutorial" rel="external nofollow" >https://cwiki.apache.org/confluence/display/Hive/Tutorial
https://db.apache.org/derby/
4 Apache Pig介绍
Apache Pig是一个数据流框架,用于对大量数据执行数据分析。它是由雅虎开发的,并向Apache软件基金会开放源代码。它现在可以在Apache许可2.0版本下使用。Pig编程语言是一种Pig拉丁脚本语言。Pig松散地连接到Hadoop,这意味着我们可以将它连接到Hadoop并执行许多分析。但是Pig可以与Apache Tez和Apache Spark等其他工具一起使用。
Apache Hive用作报告工具,其中Apache Pig用于提取、转换和加载(ETL)。我们可以使用用户定义函数(UDF)扩展Pig的功能。用户定义函数可以用多种语言编写,包括Java、Python、Ruby、JavaScript、Groovy和Jython。
Apache Pig使用HDFS读取和存储数据,Hadoop的MapReduce执行算法。Apache Pig在使用Hadoop集群方面类似于Apache Hive。在Hadoop上,Pig命令首先转换为Hadoop的MapReduce代码。然后将它们转换为MapReduce代码,该代码运行在Hadoop集群上。
Pig最好的部分是对代码进行优化和测试,以处理日常问题。所以用户可以直接安装Pig并开始使用它。Pig提供了Grunt shell来运行交互式的Pig命令。因此,任何了解Pig Latin的人都可以享受HDFS和MapReduce的好处,而不需要了解Java或Python等高级编程语言。
相关链接
http://pig.apache.org/docs/
https://en.wikipedia.org/wiki/Pig_(programming_tool))
https://cwiki.apache.org/confluence/display/PIG/Index
5 Apache Kafka 介绍
Apache Kafka是一个发布-订阅的分布式消息传递平台。它由LinkedIn开发,并进一步开源给Apache基金会。它是容错的、可伸缩的和快速的。Kafka术语中的消息(数据的最小单位)通过Kafka服务器从生产者流向消费者,并且可以在稍后的时间被持久化和使用。
Kafka提供了一个内置的API,开发人员可以使用它来构建他们的应用程序。接下来我们讨论Apache Kafka的三个主要组件。
5.1 Producer
Kafka Producer 将消息生成到Kafka主题,它可以将数据发布到多个主题。
5.2 Broker
这是运行在专用机器上的Kafka服务器,消息由Producer推送到Broker。Broker将主题保存在不同的分区中,这些分区被复制到不同的Broker以处理错误。它本质上是无状态的,因此使用者必须跟踪它所消费的消息。
5.3 Consumer
Consumer从Kafka代理获取消息。记住,它获取消息。Kafka Broker不会将消息推送给Consumer;相反,Consumer从Kafka Broker中提取数据。Consumer订阅Kafka Broker上的一个或多个主题,并读取消息。Broker还跟踪它所使用的所有消息。数据将在Broker中保存指定的时间。如果使用者失败,它可以在重新启动后获取数据。
相关链接:
https://kafka.apache.org/quickstart
https://kafka.apache.org/documentation/
6 Apache Spark介绍
Apache Spark是一个通用的分布式编程框架。它被认为非常适合迭代和批处理数据。它是在AMP实验室开发的,它提供了一个内存计算框架。它是开源软件。一方面,它最适合批量处理,另一方面,它对实时或接近实时的数据非常有效。机器学习和图形算法本质上是迭代的,这就是Spark的神奇之处。根据它的研究论文,它比它的同行Hadoop快得多。数据可以缓存在内存中。在迭代算法中缓存中间数据提供了惊人的快速处理。Spark可以使用Java、Scala、Python和R进行编程。
如果您认为Spark是经过改进的Hadoop,在某种程度上,确实是可以这么认为的。因为我们可以在Spark中实现MapReduce算法,所以Spark使用了HDFS的优点。这意味着它可以从HDFS读取数据并将数据存储到HDFS,而且它可以有效地处理迭代计算,因为数据可以保存在内存中。除了内存计算外,它还适用于交互式数据分析。
还有许多其他库也位于PySpark之上,以便更容易地使用PySpark。下面我们将讨论一些:
- MLlib: MLlib是PySpark核心的一个包装器,它处理机器学习算法。MLlib库提供的机器学习api非常容易使用。MLlib支持多种机器学习算法,包括分类、聚类、文本分析等等。
- ML: ML也是一个位于PySpark核心的机器学习库。ML的机器学习api可以用于数据流。
- GraphFrames: GraphFrames库提供了一组api,可以使用PySpark core和PySpark SQL高效地进行图形分析。
7 PySpark SQL介绍
数据科学家处理的大多数数据在本质上要么是结构化的,要么是半结构化的。为了处理结构化和半结构化数据集,PySpark SQL模块是该PySpark核心之上的更高级别抽象。我们将在整本书中学习PySpark SQL。它内置在PySpark中,这意味着它不需要任何额外的安装。
使用PySpark SQL,您可以从许多源读取数据。PySpark SQL支持从许多文件格式系统读取,包括文本文件、CSV、ORC、Parquet、JSON等。您可以从关系数据库管理系统(RDBMS)读取数据,如MySQL和PostgreSQL。您还可以将分析报告保存到许多系统和文件格式。
7.1 DataFrames
DataFrames是一种抽象,类似于关系数据库系统中的表。它们由指定的列组成。DataFrames是行对象的集合,这些对象在PySpark SQL中定义。DataFrames也由指定的列对象组成。用户知道表格形式的模式,因此很容易对数据流进行操作。
DataFrame 列中的元素将具有相同的数据类型。DataFrame 中的行可能由不同数据类型的元素组成。基本数据结构称为弹性分布式数据集(RDD)。数据流是RDD上的包装器。它们是RDD或row对象。
相关链接:
https://spark.apache.org/docs/latest/sql-programming-guide.html
7.2 SparkSession
SparkSession对象是替换SQLContext和HiveContext的入口点。为了使PySpark SQL代码与以前的版本兼容,SQLContext和HiveContext将继续在PySpark中运行。在PySpark控制台中,我们获得了SparkSession对象。我们可以使用以下代码创建SparkSession对象。
为了创建SparkSession对象,我们必须导入SparkSession,如下所示。
from pyspark.sql import SparkSession
导入SparkSession后,我们可以使用SparkSession.builder进行操作:
spark = SparkSession.builder.appName("PythonSQLAPP") .getOrCreate()
appName函数将设置应用程序的名称。函数的作用是:返回一个现有的SparkSession对象。如果不存在SparkSession对象,getOrCreate()函数将创建一个新对象并返回它。
7.3 Structured Streaming
我们可以使用结构化流框架(PySpark SQL的包装器)进行流数据分析。我们可以使用结构化流以类似的方式对流数据执行分析,就像我们使用PySpark SQL对静态数据执行批处理分析一样。正如Spark流模块对小批执行流操作一样,结构化流引擎也对小批执行流操作。结构化流最好的部分是它使用了类似于PySpark SQL的API。因此,学习曲线很高。对数据流的操作进行优化,并以类似的方式在性能上下文中优化结构化流API。
7.4 Catalyst Optimizer
SQL是一种声明性语言。使用SQL,我们告诉SQL引擎要做什么。我们不告诉它如何执行任务。类似地,PySpark SQL命令不会告诉它如何执行任务。这些命令只告诉它要执行什么。因此,PySpark SQL查询在执行任务时需要优化。catalyst优化器在PySpark SQL中执行查询优化。PySpark SQL查询被转换为低级的弹性分布式数据集(RDD)操作。catalyst优化器首先将PySpark SQL查询转换为逻辑计划,然后将此逻辑计划转换为优化的逻辑计划。从这个优化的逻辑计划创建一个物理计划。创建多个物理计划。使用成本分析仪,选择最优的物理方案。最后,创建低层RDD操作代码。
8 集群管理器(Cluster Managers)
在分布式系统中,作业或应用程序被分成不同的任务,这些任务可以在集群中的不同机器上并行运行。如果机器发生故障,您必须在另一台机器上重新安排任务。
由于资源管理不善,分布式系统通常面临可伸缩性问题。考虑一个已经在集群上运行的作业。另一个人想做另一份工作。第二项工作必须等到第一项工作完成。但是这样我们并没有最优地利用资源。资源管理很容易解释,但是很难在分布式系统上实现。开发集群管理器是为了优化集群资源的管理。有三个集群管理器可用于Spark单机、Apache Mesos和YARN。这些集群管理器最好的部分是,它们在用户和集群之间提供了一个抽象层。由于集群管理器提供的抽象,用户体验就像在一台机器上工作,尽管他们在集群上工作。集群管理器将集群资源调度到正在运行的应用程序。
8.1 单机集群管理器(Standalone Cluster Manager)
Apache Spark附带一个单机集群管理器。它提供了一个主从架构来激发集群。它是一个只使用spark的集群管理器。您只能使用这个独立的集群管理器运行Spark应用程序。它的组件是主组件和工作组件。工人是主过程的奴隶,它是最简单的集群管理器。可以使用Spark的sbin目录中的脚本配置Spark独立集群管理器。
8.2 Apache Mesos集群管理器(Apache Mesos Cluster Manager)
Apache Mesos是一个通用的集群管理器。它是在加州大学伯克利分校的AMP实验室开发的。Apache Mesos帮助分布式解决方案有效地扩展。您可以使用Mesos在同一个集群上使用不同的框架运行不同的应用程序。来自不同框架的不同应用程序的含义是什么"background-color: #ffffff">https://spark.apache.org/docs/2.0.0/spark-standalone.html
https://spark.apache.org/docs/2.0.0/running-on-mesos.html
https://spark.apache.org/docs/2.0.0/running-on-yarn.html
9 PostgreSQL介绍
关系数据库管理系统在许多组织中仍然非常常见。这里的关系是什么意思"background-color: #ffffff">https://wiki.postgresql.org/wiki/Main_Page
https://en.wikipedia.org/wiki/PostgreSQL
https://en.wikipedia.org/wiki/Multiversion_concurrency_control
http://postgresguide.com/
10 MongoDB介绍
MongoDB是一个基于文档的NoSQL数据库。它是一个开放源码的分布式数据库,由MongoDB公司开发。MongoDB是用c++编写的,它是水平伸缩的。许多组织将其用于后端数据库和许多其他用途。
MongoDB附带一个mongo shell,这是一个到MongoDB服务器的JavaScript接口。mongo shell可以用来运行查询以及执行管理任务。在mongo shell上,我们也可以运行JavaScript代码。
使用PySpark SQL,我们可以从MongoDB读取数据并执行分析。我们也可以写出结果。
相关链接:
https://docs.mongodb.com/
11 Cassandra介绍
Cassandra是开放源码的分布式数据库,附带Apache许可证。这是一个由Facebook开发的NoSQL数据库。它是水平可伸缩的,最适合处理结构化数据。它提供了高水平的一致性,并且具有可调的一致性。它没有一个单一的故障点。它使用对等的分布式体系结构在不同的节点上复制数据。节点使用闲话协议交换信息。
相关链接:
https://www.datastax.com/resources/tutorials
http://cassandra.apache.org/doc/latest/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]