图 1-8。
Simple data visualization displayed on a world map, using the DevExpress toolkit
利用 Hadoop 进行大数据分析是很特殊的。对于 Hadoop 系统架构师来说,Hadoop BDA 提供并允许利用标准的主流架构模式、反模式和策略。例如,BDAs 可以利用标准的 ETL(提取-转换-加载)概念,以及在“云中”开发分析系统的架构原则来开发。标准的系统建模技术仍然适用,包括计划的“应用层”方法。
应用层计划的一个例子可能包罗“服务层”(它提供应用步伐的“计算引擎”或“业务逻辑”)和数据层(它存储和管理输入和输出数据,以及数据源和接收器,以及由系统用户访问的输出层,它向输出装备提供内容)。当内容被提供给 web 欣赏器时,这通常被称为“web 层”。
Issues of the Platform
在本书中,我们在 Mac OS X 环境中表达了很多例子。这是故意的。我们利用 Mac 环境的主要原因是,它似乎是 Linux/Unix 语法(究竟,这是 Hadoop 赖以生存的地方)和规模更小的开发环境之间的最佳妥协,在这种环境中,开发职员可以尝试这里表现的一些想法,而不必要大型 Hadoop 集群,乃至不必要一台笔记本电脑。这并不意味着你不能在 Cygwin 的 Windows 平台或类似的环境中运行 Hadoop。
图 1-9。
A simple data pipeline
一个简朴的数据管道如图 1-9 所示。在某种程度上,当考虑 BDAs 时,这个简朴的管道就是“Hello world”步伐。它对应于所有数据分析师都认识的那种简朴的主流 ETL(提取-转换-加载)过程。管道的后续阶段转换先前的输出内容,直到数据被发送到最终的数据接收器或结果存储库。
1.15.1 利用 Eclipse IDE 作为开发环境
Eclipse IDE 已经存在很长时间了,关于利用 Eclipse 进行现代应用步伐开发的争论在大多数利用 Java 或 Scala 的开发中心都很猛烈。现在有很多替换 Eclipse 的 IDE,您可以选择此中任何一个来试验和扩展本书中开发的示例系统。大概,如果您愿意,您乃至可以利用常规的文本编辑器并从下令行运行系统,只要您身边有最新版本的 Apache Maven。附录 A 向您展示了如何为各种 ide 宁静台(包括现代 Eclipse 环境)设置和运行示例系统。趁便提一下,Maven 是一个非常有效的工具,用于构造构成任何 BDA 的模块化的基于 Java 的组件(以及用 Scala 或 JavaScript 等其他语言实现的组件),并且被直接集成到 Eclipse IDE 中。Maven 在下令行上构建、测试和运行 BDA 同样有效。
我们发现,在开发本书中讨论的一些混合应用步伐示例时,Eclipse IDE 特殊有价值,但这可能是个人喜好的问题。请随意将示例导入到您选择的 IDE 中。
图 1-10。
A useful IDE for development : Eclipse IDE with Maven and Scala built in Data Sources and Application Development
在主流应用步伐开发中——大多数时候——我们只会遇到一些基本范例的数据源:关系、各种文件格式(包括原始的非结构化文本)、逗号分隔的值,乃至是图像(可能是流数据,乃至是更奇特的东西,比如 Neo4j 等图数据库的导出)。在大数据分析领域,可能会用到信号、图像和多种非结构化数据。这些可能包括空间或 GPS 信息、来自传感器的时间戳以及各种其他数据范例、元数据和数据格式。在本书中,特殊是在示例中,我们将向您展示各种各样的常见数据格式以及外来数据格式,并提供关于如何对数据进行标准 ETL 操纵的提示。在得当的时候,我们将根据必要讨论数据验证、压缩以及从一种数据格式到另一种数据格式的转换。
1.15.2 本书不是什么
既然我们已经注意到了这本书是关于什么的,我们现在必须查抄它不是什么。
这本书不是对 Apache Hadoop、大数据分析组件或 Apache Spark 的先容。已经有很多良好的书籍描述了“vanilla Hadoop”(直接从 hadoop.apache.org 获得)及其生态系统的特性和机制,以及近来的 Apache Spark 技术,这些技术代替了 Hadoop 的原始 map-reduce 组件,并允许批处理和内存处理。
在整本书中,我们将描述有效的 Hadoop 生态系统组件,尤其是那些与我们将在本书别的部分构建的示例系统相干的组件。这些组件是我们的 BDAs 或大数据分析组件的构建模块,因此本书不会深入讨论组件功能。对于标准的 Hadoop 兼容组件,如 Apache Lucene、Solr、Apache Camel 或 Spring Framework,书籍和互联网教程触目皆是。
我们也不会深入讨论方法论(例如迭代或敏捷方法论),尽管这些是构建大数据分析系统的非常重要的方面。我们希望我们在这里讨论的系统对你有效,不管你选择什么样的方法风格。
How to Build The BDA Evaluation System
在这一节中,我们将扼要先容如何建立 BDA 评估系统。乐成完成后,这将为您提供评估本书剩余部分中讨论的代码和示例所需的一切。各个组件在其各自的网站上都有完备的安装说明。
Insure that Apache Spark is installed. Experiment with a single-machine cluster by following the instructions at http://spark.apache.org/docs/latest/spark-standalone.html#installing-spark-standalone-to-a-cluster . Spark is a key component for the evaluation system. Make sure the SPARK_HOME environment variable is set in your.bash_profile file .
图 1-11。
Successful installation and run of Apache Spark results in a status page at localhost:8080 To make sure the Spark system is executing correctly, run the program from the SPARK_HOME directory.
./bin/run-example SparkPi 10
复制代码
You will see a result similar to the picture in Figure 1-12.
图 1-12。
To test your Spark installation, run the Spark Pi estimator program. A console view of some expected results.
图 2-3。
Successful installation of the line profiler package
http://www.huyng.com/posts/python-performance-analysis/ 对分析 Python 步伐有很好的论述。
通过键入以下下令安装内存分析器:
<name>Big Data Toolkit (BDT) Application, with JBoss Drools Component</name>
<url>http://maven.apache.org</url>
<properties>
<hadoop.version>0.20.2</hadoop.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- add these five dependencies to your BDA project to achieve rule-based support -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-persistence-jpa</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-spring</artifactId>
<version>6.0.0.Beta2</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-camel</artifactId>
<version>6.0.0.Beta2</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-jsr94</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<version>0.9</version>
</dependency>
</dependencies>
<build>
<finalName>BDT</finalName>
</build>
</project>
Listing 3-2.Add JBoss Drools dependencies to add rule-based support to your analytical engine. A complete example of a Drools use case is in Chapter 8!
Listing 3-4.Complete listing to include deeplearning 4j components
复制代码
在扩充您的 BDA 评估项目以利用这个pom.xml之后,执行maven clean、install和package任务以确保您的项目精确编译。
3.3 Spring 框架和 Spring 数据的利用
Spring 框架( https://spring.io )及其相干框架 Spring 数据(projects.spring.io/spring-data)是重要的 glueware 组件,但是 Spring 框架也提供了各种各样的功能资源。这些包括安全性、ORM 连接性、基于模型-视图-控制器(MVC)的应用步伐开发等等。Spring Framework 利用面向方面的编程方法来办理横切关注点,并完全支持 Java 代码中各种称为“原型”的表明,最大限度地减少了手工制作样板文件的必要。
我们将在本书中利用 Spring Framework 来利用它提供的复杂功能资源,并研究 Spring Data Hadoop 组件(projects.spring.io/spring-hadoop/),这是 Hadoop 和 Spring 的无缝集成。特殊是,我们将在第九章开发的完备分析系统中利用几个 Spring 框架组件。
3.4 数字和统计库:R、Weka 和其他
在这一节中,我们将讨论 R 和 Weka 统计库。R ( r-project.org)是一种专门为统计分析开发的表明性高级语言。Weka ( http://www.cs.waikato.ac.nz/ml/weka )是一个强盛的统计库,为数据发掘和其他分析任务提供机器学习算法。一个有趣的新发展是分布式 R 和分布式 Weka 工具包。有关 Mark Hall 的 DistributedWekaBase 和 Distributed Weka 的信息,请访问