关于Spark(Python、Java、JVM、RDD)

关于Hadoop和Spark的分布式处理

    • 巨大データの取り扱いを目的とした分散処理のフレームワーク

 

    • 分散処理によってビッグデータを高速に処理することが可能

 

    Hadoopの利用者は自作したデータ処理のプログラムや他者が開発したツールプログラムをHadoop内に組み込んでビッグデータ処理が可能

在Hadoop上运行的数据库管理系统(DBMS)。

    • Hive

 

    Impala

在Hadoop上运行的脚本环境。

    Pig

Hadoop的整合软件使大数据处理环境更加便利。
Spark与Hadoop一样是分布式处理框架。
Spark是使用Scala作为衍生自Java的语言开发的,而Hadoop是使用Java语言开发的。

Spark的内部处理方式

    • データをメモリに保存することで入出力の高速化を図り処理全体の実行速度を向上させようとする取り組みがある。

 

    • 利用可能メモリが枯渇した場合にはデータをストレージに保存するケースも勘案

 

    • 機械学習の計算処理に効果を発揮する

 

    実際特定のアプリケーションに関する実行性能は、HadoopのMapReduce処理と比べた場合の100倍

关于「数据存储位置」的选择范围广泛。

    • Sparkで処理を行うデータは「いろいろな種類のデータ置き場」に格納可能

 

    Sparkは様々なデータ格納場所からのデータ入出力に対応している

基本上,Hadoop需要一個名為「Hadoop分散式文件系統(HDFS)」的專用文件存儲位置作為數據存儲位置。

    • Hadoop Distributed File System (HDFS)

 

    • Cassandra

 

    • OpenStack Swift

 

    Amazon S3

可以处理上述等的存储设备。

关于程序方法的选择广度

    • Java(直接Hadoopを制御する事からこの方法を生Hadoopと呼んだりします)

 

    • HiveQL(Hadoop+Hive)

 

    • Pig(Hadoop+Pig)

 

    Hadoop Streamingを使用することで標準入出力を介してPythonなどから制御

通过与”Hadoop不同的软件”进行编程是很常见的。
尽管Spark本身是用Scala编程的,但它采用了比其他编程语言更紧密的方法。也就是说,用于控制Spark的功能不仅限于Scala。

    • Java

 

    • Python

 

    • R言語

 

    Spark SQL

提供了适用于各种程序语言的API。

Spark和Hadoop的关系并非竞争,而是共存。用户可以有更广泛的选择。

* 在Hadoop内使用Yarn进行控制并利用Spark也是现实的选择。
* Spark也支持将数据输入输出到HDFS。
* 目前,Spark和Hadoop存在共存关系。

Spark在HDFS上控制数据,使其与两者的亲和性更加紧密,包括现有数据的可重用性在内。在竞争方面,适当的表达是“Spark处理方式与MapReduce处理方式的竞争”。

有关Apache Spark

    • 半構造化データ(https://jp.drinet.co.jp/blog/datamanagement/semi-structured-data)

 

    • 構造化データ

 

    • ストリーミングデータ

 

    • 機械学習

 

    データサイエンス

可以从主节点上的一个驱动程序进程(可以具有多个工作)启动。

发送指令给分布在多个工作节点上的Executor进程(多个任务)。

有向非循环图存在时,Spark会通过优化任务调度和执行来处理它们。

RDD (耐障害性分散数据集)可以被视为一种耐障害性的、分布式的数据集。

这个项目主要由不可变的Java虚拟机(JVM)对象分布式集合构成。
Python数据保存在JVM对象中。
通过使用这些对象,可以在任何作业中高速执行计算操作。
RDD利用内存有效地进行计算,缓存和存储。
因此,与其他传统框架如Apache Hadoop相比,计算速度提高了几个数量级。

RDD的功能

生成地图
合并
筛选
…等等

RDD可以并行地应用数据转换和记录操作。因此,它具有更快的速度和更好的容错性。
通过注册转换操作,RDD可以提供数据的重建功能。
如果出现问题导致部分数据丢失,可以进行回退操作。如果数据丢失,可以重新计算。

RDD操作

    • 変換(新しいRDDポインターを返す。) → 遅延処理

 

    アクション(演算処理を行い、値をドライバーに返す。)矢印戻り値のこと?

Spark的最大优点是能够并行处理。

为了了解数据集的情况,在分析过程中经常使用的步骤。
1. 计算每个值在某一列中出现的次数。
2. 选择以A开头的值。
3. 将结果显示在屏幕上。

数据可以以多种格式进行支持,如文本、parquet、JSON、Hive表等。
可以使用JDBC驱动程序从关系型数据库中读取数据。
Spark可以自动处理压缩的数据集,几乎可以混合使用任何内容。
* 数据结构可以是无模式的(tuple、dict、list)

元数据

* メタデータとは一言で言えば、「关于数据的数据」。
* 数据:分为“有结构数据”和“无结构数据”。
* 有结构数据:有结构数据的内容和格式都是事先确定的,并在关系数据库管理系统中实现。
* 无结构数据:无结构数据的内容和格式没有明确的规定,可以适用于各种数据。(包括图像、音频、文本数据等都属于无结构数据)

使用Python在Pyspark中的方法

    クラスたモードとローカルモードが存在する。

在本地模式下执行
使用常规的Python代码也没有问题。
结构上的变化更容易发生在数据和代码在独立的工作进程之间被复制的情况下。

在集群模式下执行
当作业被提交并执行时,该作业会被发送到驱动节点。
驱动节点会生成作业中的有向无环图(DAG),并确定每个执行节点。
然后,驱动节点会指示工作节点执行各自的任务,并在处理完成后将结果返回给驱动节点。

关于关系数据库管理系统(RDMS)

在管理和利用数据的系统中,MySQL、Oracle等关系数据库管理系统(RDBMS)是代表性的系统。
RDBMS可以处理复杂的数据并实时处理,但在处理大量数据时会出现性能下降的弱点。

为了处理数据库无法跟上的大量数据,引入了分布式处理的概念。将数据分割成多个服务器或CPU进行处理,以便高速处理大量数据。可以想象多台计算机互相分担工作进行处理,这样更容易理解。

那就是主节点和核心节点。

分散处理被用于需要大量数据处理的工作,如气象预测、灾害预测、基因解析、实时分析社交网络、网站用户行为分析等。在处理大数据方面,分散处理是不可或缺的要素,其需求近年来持续增长。

Hadoop和Spark是可以用于嵌入分散处理功能的框架的代表。

Jupyter Notebook中的PySpark Docker

bannerAds