整理
数据家cdo.ren
文
节选自《数据科学家修炼之道》
当数据科学家需要使用某些软件时,其中一部分我们已经在之前的章节中做过介绍,这些软件涵盖了数据科学家所需要的基础专业内容。实际的工作范畴可能会超越求职时候的工作描述,这也是IT工作的常态之一。这在某种程度上是好的,因为它提供了学习新技能的机会,而这也是数据科学领域最引人入胜的方面之一。
在这一章中,我们会探索数据科学环境中常用的软件。不是所有在这里提到的软件都会在你的工作中用到,但了解它们会让你拥有更多选择。特别是我们会提到Hadoop套件的一些其他备选工具(例如Spark、Storm等),许多功能强大的面向对象编程语言(Java、C++、C#、Ruby和Python),现有的数据分析软件(R、Matlab、SPSS、SAS或是Stata),你可能会用到的虚拟化程序以及大数据集成系统(例如IBM的BigInsights、Cloudera等)。我们还会看看你可能接触到的其他软件,例如GIT、Excel、Eclipse、Emcien以及Oracle。注意这个列表只是告诉你这一领域的主流软件有哪些,但它们并不一定是你在未来工作中的真实环境下所使用的工具。一些公司可能会用到它所在行业的专业软件,在你入职的时候也许会被要求你去熟悉这些软件。了解这个列表中的大部分软件会让你工作地相对轻松和明确。
1Hadoop套件和朋友们Hadoop在过去的几年里,几乎成为大数据的代名词。这是数据科学家的兵器库中的主要支撑。知道Hadoop不只是一个程序是非常重要的,它更像一组工具(类似于微软的Office)。这个套件被用于传输,保存和处理大数据。它还包含有一个调度器(Oozie)、元数据和表格管理架构(HCatalog)。所有在Hadoop中处理数据的任务都是分布在安装了Hadoop的所有机器集群中的,这些任务可以是面向对象程序(OOP)代码、数据分析程序、数据图形化脚本以及其他具有有限处理时间(finiteprocesstime)特征和对数据分析有用的任务。Hadoop会确保不管你对数据做什么样的操作都能以高效的方式完成,并以直观的方式呈现。
Hadoop并没有一个对用户友好的软件环境,如图1所示,这是一个典型的Hadoop任务的样子。
图1Hadoop任务仪表盘(Dashboard)的屏幕截屏
Hadoop套件由以下几个组件组成,所有的组件都很重要。
MapReduce由Google创建,并且是Hadoop的主要组件。正如在之前的部分我们曾提到过的那样,这是任何大数据技术的核心。尽管这是Hadoop固有的特性,但它也可以在其他的大数据程序,例如MPP和NoSQL数据库(例如,MongoDB)。MapReduce最初是具有商业所有权的,但随着Yahoo在年提供了慷慨的资金支持,它以Hadoop的开源形式出现,并在两年内迅速受到广泛欢迎。作为一个 的并行计算算法,它得以让数据库的查询建立在一个计算机集群上,任务可以分拆成小份,并跨越整个集群的节点。
HDFS是Hadoop分布式文件系统的简称,这是Hadoop系统所使用的文件系统。被Hadoop所处理的数据必须先导入到HDFS中,并备份在运行了Hadoop的计算机网络中。它的数据极限大约在30PB。
Pig是针对Hadoop进行计算的一个高级编程语言(High-levelprogramminglanguage)。你可以将它视为Hadoop生态系统中各种操作的控制元件。它的性能是可扩展的。
Hive是一个数据仓库程序,是以“类-SQL”语言进行访问使用的,他是为横跨Hadoop集群的数据设计的。并且它的性能是可扩展的。
HBase、Sqoop以及Flume是Hadoop的数据库组件。HBase是一个可以运行在Hadoop环境上的列式数据库。它是基于Google的BigTable设计的,并且数据极限约为1PB。另外,它比直接在HDFS上访问数据要慢一些。这对于处理存在HBase里面的数据来说不是很好,对HBase对于归档和时间系列数据的计数很合适。Sqoop是一个将关系型数据库中的数据导入到HDFS中的程序。Flume与此类似,它白癜风哪家 北京主治白癜风医院