标签 hadoop 下的文章

Hadoop distcp集群间同步数据

hadoop distcp -D ipc.client.fallback-to-simple-auth-allowed=true -log /temp/tianhailong/ webhdfs://10.11.4.240:50070/test/tianhl webhdfs://10.11.1.10/user/hive

遇到的坑:
1、数据所在的集群所有机器,需要配置同步集群的hosts。
2、带有Kerberos安全认证,需要加参数。-D ipc.client.fallback-to-simple-auth-allowed=true
3、 注意运行日志,需要写入有权限的文件夹。 -log /temp/tianhailong/
4、被写入数据的集群是hive用户写入的,需要找一个hive可以写入的权限的文件夹存放数据。/user/hive
 
参数说明:

-m <num_maps> 同时拷贝的最大数目 指定了拷贝数据时map的数目。请注意并不是map数越多吞吐量越大。

参考网址:
https://community.hortonworks.com/questions/294/running-distcp-between-two-cluster-one-kerberized.html
http://stardust.wang/?p=331

hadoop spark 大数据相关资源

小象《Hadoop 2.X大数据平台V3》
链接:http://pan.baidu.com/s/1nvS7GFJ 密码:tqng
《Spark 1.X 大数据平台V2》11月份班
链接:http://pan.baidu.com/s/1sl6KOGX 密码:qlea
深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布式缓存
链接:http://pan.baidu.com/s/1gfsmj3X 密码:50y2
资源整理中…….
欢迎大家补充!

Hadoop和云计算的关系

Hadoop组件

Hadoop组件


Hadoop主要是由HDFS和MapReduce组成,HDFS是一个分布式文件系统(Hadoop Distributed File System),MapReduce则是用于并行处理大数据集的软件框架。因此,Hadoop是一个能够对大量数据进行分布式处理的软件框架,它是一种技术的实现。
Hadoop是Apache基金会下的一款开源软件,
它实现了包括分布式文件系统HDFS和MapReduce框架在内的云计算软件平台的基础架构,并且在其上整合了包括数据库、云计算管理、数据仓储等一系列平台,其已成为工业界和学术界进行云计算应用和研究的标准平台。Hadoop现在已经广泛应用于包括国外的FaceBook,Twitter,Yahoo!等公司,国内的百度,阿里等,Hadoop运行在数以千计的服务器和数以万计的CPU的集群上。基于Hadoop,用户可编写处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。
Hadoop已被全球几大IT公司用
作其”云计算”环境中的重要基础软件,如:雅虎正在开发基于Hadoop的开源项目Pig,这是一个专注于海量数据集分析的分布式计算程序。亚马逊公司则基于Hadoop推出了Amazon S3(Amazon Simple Storage Service),提供可靠,快速,可扩展的网络存储服务。因此,Hadoop是云计算中一部分技术的实现,而不是全部。
云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变,但云计算的概念其实早已提出很久,早在上世纪60年代,麦卡锡就提出了把计算能力作为一种像水和电一样的公用事业提供给用户的理念,这成为云计算思想的起源。在20世纪80年代网格计算、90年代公用计算,21世纪初虚拟化技术、SOA、SaaS应用的支撑下,云计算作为一种新兴的资源使用和交付模式逐渐为学界和产业界所认知。因此,云计算的存在只是一种新的商业计算模型和服务模式。

大数据热门职业薪酬榜

随着越来越多企业开始投身于大数据技术的革新洪流,对于IT专业人士的市场需求也水涨船高。时至今日,具备收集、整理、分析以及构建不同来源数据技能的人才正迎来自己职业生涯的上升期。
在当下的数字化时代,数据量的丰富程度远远超过历史上的任何时期,很多时候这种丰富程度甚至成为一种沉重的负担。企业开始将大量资源投入到云技术、移动技术以及社交媒体当中。结合这些新兴领域,再加上企业自身运营所必然产生的信息,我们发现目前需要收集的数据总量单单用“爆炸式”已经不足以形容其扩张速度。根据Kforce公司(一家总部位于佛罗里达州坦帕市的人力资源企业)的调查,伴随着数据量的节节攀升,市场对于有能力收集、整理并利用数据内容的人才显现出旺盛的需求态势。
需要强调的是,本文中所列举的所有薪酬都按照一位典型IT专业人士以每周四十小时的工作时长来计算。
一、Hadoop开发人员
Hadoop是一套基于Java的开源框架,旨在支持大规模数据集的处理流程。根据Kforce公司的调查结果,Hadoop框架中的数据及其它一系列相关技术——包括Hive、HBase、MapReduce、Pig等——都对使用者提出了很高的专业知识要求。由于受到当下数据规模的有力推动,而且事实上如果不借助规模化分布式处理机制的强大能力、企业根本无法承受由传统商务智能工具处理海量数据所带来的高昂成本及漫长的时间周期。
“纵观当前的大数据发展环境,拥有Hadoop框架使用经验的人才最受市场追捧。这些职位往往主要负责帮助企业完善其长期大数据战略并使其趋于成熟,”Kforce公司CTO Greg Jones表示。
平均年薪:15-17.5万美元
平均时薪:70美元
二、信息架构师
“大数据让整个世界对数据掌控权的重要性产生了新的认识。”Kforce公司大数据团队指出。
要充分利用企业数据优势并构建起具备可操作性的规划,相关人员必须拥有特殊的技能储备。信息架构师需要了解如何定义并记录关键性元素,同时确保以最具影响力的方式向企业解释数据内容。主数据管理、业务知识以及数据模型构成了这类从业人员必须掌握的三大关键性技能。
平均年薪:11.375-13.535万美元
平均时薪:65美元
三、ETL开发人员
企业用户的数据量以及数据类型出现爆炸式增长,因此市场也为有能力收集并整合大数据内容的专业人士提供了非常广阔的发展空间。ETL开发人员的主要工作内容在于从企业的各类不同数据源处收集数据,并创造出多种能够从中提取数据信息的途径。除此之外,他们还需要根据企业的实际需求对提取结果加以导入及修改,并最终将其添加到数据仓库当中。
“由于ETL软件行业目前已经相当成熟,这些岗位很可能会在大数据资源池当中获得最为稳定且持久的任期,包括雇员或者外包这两种方式,”Kforce公司CTO Greg Jones指出。
平均年薪:11-13万美元
平均时薪:63.02美元
四、预测分析开发人员
“预测分析如今被营销团队大量使用,旨在预测消费者的未来行为与产品的目标受众,”Kforce公司解释称。
这一角色有时候似乎与数据科学家在工作中的探索天性颇为相近,双方都需要利用企业数据研究多种“假设”场景的可能走向。这些技能高超的IT人员精于创建潜在业务场景,并懂得如何利用历史数据表现来假设并测试阈值以及未来的表现。
平均年薪:10.37-12.9万美元
平均时薪:60美元
五、可视化工具开发人员
数据规模的极度膨胀也给分析工作带来了诸多挑战。以Spotfire、Qlikview以及Tableau为代表的各类可视化工具集帮助我们直观快捷地完成数据探测工作。另外,与之相关的岗位也很可能最终趋近于通用型商务智能开发类别。根据Kforce公司的调查,Hadoop目前的人气相当高涨,同时也将成为一种全新的专业技能门类。
“这些技能在短期内将作为热门资源受到高度追捧。随着此类资源的供给与需求逐渐达到平衡,加之相关工具集的日益成熟,未来职位的薪酬水平有可能有所放缓,具备这些资源的人才也很可能转化为全职员工。”Kforce公司CTO Greg Jones表示。
平均年薪:15-17.5万美元
平均时薪:57.50美元
六、数据仓库设备专家
“这些专家专门打理数据仓库设备,例如来自Teradata、Neteeza以及Exadata公司的产品。”Kforce指出。与这类职业角色相关联的核心任务包括数据集成、管理以及利用高端设备实现性能优化等。这些专业设备用于为企业用户提供规模化并行处理(简称MPP)流程,并通过对内存、磁盘以及数据存储架构进行特殊优化来构建适合实际需求的分析处理环境。”
——Kforce公司大数据团队
平均年薪:9.795-12.36万美元
平均时薪:57.5美元
七、OLAP开发人员
在线分析处理(简称OLAP)开发人员是数据组织优化方面的专家,擅长所谓的“大卸八块”式分析。在这一流程中,数据取向关系类或者非结构化数据源,并需要根据数据内容创建三维模型——通常被称为“星状”或者“雪花状”架构,然后再打造出用户界面、保证使用者能够通过高性能预定义查询实现数据访问。
平均年薪:9.79-11.555万美元
平均时薪:55美元
八、数据科学家
作为IT业界中的组成部分,数据科学家过去曾经被称为“数据架构师”。数据科学家是另一种全新类型的技术专业人士,其主要能力在于将自身的数据组织技能融入到商业价值主张当中。这类从业者还必须具备良好的沟通技巧,从而顺利完成向IT领导者及企业高层解释数据结果的任务。这些数据科学家通常都拥有自己的一套沙箱环境,利用它实现组织数据的探索与研究,并帮助推动业务创新活动。
“一部分属于分析师、一部分属于艺术家,数据科学家这一角色需要始终保持着旺盛的好奇心、能够一直紧盯着数据及焦点趋势。这几乎像是在文艺复兴时期对发展走向加以梳理,并根据结果指导企业的经营变化,”IBM公司大数据产品副总裁Anjul Bhambhri解释道。
PS:个人认为,做数据处理的其实没什么,做数据分析的才是大数据的关键!

Hadoop权威博客

请关注Yahoo! Hadoop团队的博客(developer.yahoo.com/blogs/hadoop)。
Hadoop在eBay的应用内容是根据eBay研究人员的技术博客[2]整理而成的,其中参考了eBay分析平台开发部Anil Madan介绍的Hadoop在eBay的使用情况,大家如果想要了解Hadoop在eBay应用的更多信息,可以关注eBay研究人员的技术博客(www.ebaytechblog.com)。
百度使用Hadoop平台的情况则是根据近几届Hadoop中国云计算大会上百度研究人员的报告整理而成,大家如果想了解更详细的信息或Hadoop中国云计算大会的相关信息可登录Hadoop in China网站:http://www.hadooper.cn。
Facebook使用Hadoop的情况是根据Facebook相关技术人员在各个云计算大会上所做的报告整理而成的。
Hadoop平台上的海量数据排序的相关内容是根据Hadoop基准排序测试的报告[3],[4]撰写而成,如果大家想要了解排序基准测试的更多细节或排名情况,可以登录http://sortbenchmark.org查看。
[1] Alan Gates, Pig and Hive at Yahoo!, http://developer.yahoo.com/blog/hadoop/posts/2010/08/ pig_and_hive_at_yahoo/
[2] Anil Madan, Hadoop-The power of the Elephant, http://www.ebaytechblog.com/2010/10/29/ hadoop-the-power-of-the-elephant/
[3] Owen O扢allay, TeraByte Sort on Apache Hadoop, http://sortbenchmark.org/YahooHadoop.pdf
[4] Owen O扢allay & Arun C.Murthy, Winning a 60 Second Dash with a Yellow Elephant, http://sortbenchmark.org/Yahoo2009.pdf

hadoop Task process exit with nonzero status of 126

通过分析hadoop 1.0.1代码,发现map/reduce task在执行的时候,hadoop系统会先把要执行的java 命令已经一些环境变量写到一个本地的sh文件taskjvm.sh中,然后使用bash -c file的方式执行这个sh脚本,如果出错当然后抛出异常,进而导致看到
Caused by: java.io.IOException: Task process exit with nonzero status of 126.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)
这样的错误
所以,这个exitcode实际就是bash执行时的推出代码,bash的exitcode是有特殊含义的,通过google可以知道126表明是permission的问题,具体为啥是这样的,不是很清楚了~~
上面的那个文件在创建的是权限是700(rwx——), 而这个文件在执行的过程中又被以setsid的方式exec,会不会这中间有些permission上的问题那~~~ 源码里说了,这样做是为了防止special character attacks
好吧水平有限,看不出来这里有什么竞争条件导致出现那样的错误
bash的退出码含义可以在下面的地方查到 http://tldp.org/LDP/abs/html/exitcodes.html
这个问题可以修改hadoop源码DefaultTaskControl加入重试机制,或者对task启用reuse=-1得到缓解(reuse和非reuse执行逻辑不一样),因为涉及到文件系统,不太容易根治。

Hadoop的分块与分片

HDFS存储系统中,引入了文件系统的分块概念(block),块是存储的最小单位,HDFS定义其大小为64MB。与单磁盘文件系统相似,存储在HDFS上的文件均存储为多个块,不同的是,如果某文件大小没有到达64MB,该文件也不会占据整个块空间。在分布式的HDFS集群上,Hadoop系统保证一个块存储在一个datanode上。
当我们执行hadoop fs -put aa.txt /bb.txt,则aa.txt会被复制为集群的/bb.txt。查看系统的log日志hadoop-$username-namenode-*.log,可以看到类似于
2011-09-07 08:39:12,506 INFO org.apache.hadoop.hdfs.StateChange: BLOCK* NameSystem.addStoredBlock: blockMap updated: 127.     0.0.1:50010 is added to blk_5715489406767973176_1455 size 32
这样的信息,里面记录有分配block的元数据信息和block号(blk_5715489406767973176)。
在另一个日志中hadoop-$username-datanode-*.log可以看到对应的datanode打印出相应的log:
2011-09-07 08:39:12,495 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Receiving block blk_5715489406767973176_145     5 src: /127.0.0.1:48492 dest: /127.0.0.1:50010
HDFS的namenode只存储整个文件系统的元数据镜像,这个镜像由配置dfs.name.dir指定,datanode则存有文件的metainfo和具体的分块,存储路径由dfs.data.dir指定。
分析完毕分块,下面讨论一下分片:
hadoop的作业在提交过程中,需要把具体的输入进行分片。具体的分片细节由InputSplitFormat指定。分片的规则为  FileInputFormat.class中的getSplits()方法指定:
long splitSize = computeSplitSize(goalSize, minSize, blockSize);
computeSplitSize:
Math.max(minSize, Math.min(goalSize, blockSize));
其中goalSize为“InputFile大小”/“我们在配置文件中定义的mapred.map.tasks”值,minsize为mapred.min.split.size,blockSize为64,所以,这个算式为取分片大小不大于block,并且不小于在mapred.min.split.size配置中定义的最小Size。
当某个分块分成均等的若干分片时,会有最后一个分片大小小于定义的分片大小,则该分片独立成为一个分片。
http://hi.baidu.com/chemical_liang/item/bd2d0163eb54d3177ddecceb

Hadoop map和reduce的个数

一般情况下,在输入源是文件的时候,一个task的map数量由splitSize来决定的,那么splitSize是由以下几个来决定的
goalSize = totalSize / mapred.map.tasks
inSize = max {mapred.min.split.size, minSplitSize}
splitSize = max (minSize, min(goalSize, dfs.block.size))
一个task的reduce数量,由partition决定。
在输入源是数据库的情况下,比如mysql,对于map的数量需要用户自己指定,比如
jobconf.set(“mapred.map.tasks.nums”,20);
如果数据源是HBase的话,map的数量就是该表对应的region数量。
map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务的分布式并行计算,从这个观点来看,如果将map和reduce的数量设置为1,那么用户的任务就没有并行执行,但是map和reduce的数量也不能过多,数量过多虽然可以提高任务并行度,但是太多的map和reduce也会导致整个hadoop框架因为过度的系统资源开销而使任务失败。所以用户在提交map/reduce作业时应该在一个合理的范围内,这样既可以增强系统负载匀衡,也可以降低任务失败的开销。
1 map的数量
map的数量通常是由hadoop集群的DFS块大小确定的,也就是输入文件的总块数,正常的map数量的并行规模大致是每一个Node是10~100个,对于CPU消耗较小的作业可以设置Map数量为300个左右,但是由于hadoop的没一个任务在初始化时需要一定的时间,因此比较合理的情况是每个map执行的时间至少超过1分钟。具体的数据分片是这样的,InputFormat在默认情况下会根据hadoop集群的DFS块大小进行分片,每一个分片会由一个map任务来进行处理,当然用户还是可以通过参数mapred.min.split.size参数在作业提交客户端进行自定义设置。还有一个重要参数就是mapred.map.tasks,这个参数设置的map数量仅仅是一个提示,只有当InputFormat 决定了map任务的个数比mapred.map.tasks值小时才起作用。同样,Map任务的个数也能通过使用JobConf 的conf.setNumMapTasks(int num)方法来手动地设置。这个方法能够用来增加map任务的个数,但是不能设定任务的个数小于Hadoop系统通过分割输入数据得到的值。当然为了提高集群的并发效率,可以设置一个默认的map数量,当用户的map数量较小或者比本身自动分割的值还小时可以使用一个相对交大的默认值,从而提高整体hadoop集群的效率。
2 reduece的数量
reduce在运行时往往需要从相关map端复制数据到reduce节点来处理,因此相比于map任务。reduce节点资源是相对比较缺少的,同时相对运行较慢,正确的reduce任务的个数应该是0.95或者1.75 *(节点数 ×mapred.tasktracker.tasks.maximum参数值)。如果任务数是节点个数的0.95倍,那么所有的reduce任务能够在 map任务的输出传输结束后同时开始运行。如果任务数是节点个数的1.75倍,那么高速的节点会在完成他们第一批reduce任务计算之后开始计算第二批 reduce任务,这样的情况更有利于负载均衡。同时需要注意增加reduce的数量虽然会增加系统的资源开销,但是可以改善负载匀衡,降低任务失败带来的负面影响。同样,Reduce任务也能够与 map任务一样,通过设定JobConf 的conf.setNumReduceTasks(int num)方法来增加任务个数。
3 reduce数量为0
有些作业不需要进行归约进行处理,那么就可以设置reduce的数量为0来进行处理,这种情况下用户的作业运行速度相对较高,map的输出会直接写入到 SetOutputPath(path)设置的输出目录,而不是作为中间结果写到本地。同时Hadoop框架在写入文件系统前并不对之进行排序。
http://blog.sina.com.cn/s/blog_4439f9310101bxss.html

Hadoop 2.0激活大数据应用开发

Hadoop生态系统还在不断演进。倒退几年,我们还仅仅把Hadoop看作是HDFS(分布式文件系统)、MapReduce(软件编程模型)以及一些元素(工具与API)的组合,它们逐渐成为了大数据的代名词。
然而上周在圣何塞举行的Hadoop峰会2013让我们意识到,Hadoop已经发生了本质上的变化。Hadoop 2.0登上历史舞台,随之而来的增强特性为我们带来了一套新的数据编程方式,尽管依然依附于Hadoop,但它已经为我们提供了打破Hadoop固有印象的可能。
在Hadoop 2.0中,新增强的功能虽然还是围绕HDFS以及相关组件,如HBase数据库、Hive数据仓库以及Knox安全网关等,但是最引人关注的还是2.0中的YARN组件。YARN的名称来自于字母缩写“Yet Another Resource Manager”,直译可以称为另一个资源管理器。利用YARN,用户可以完全放弃原有的MapReduce,通过与批处理完全不同的新的交互方式来运行Hadoop。
商业智能咨询顾问Colin White 指出,Hadoop 2.0的HDFS对架构进行了重新设计,从而消除了某些单点故障的隐患。这仅仅是开始,更关键的进步在于API层面。White表示:“具有革命性的变化来自于YARN,它使得我们可以使用另外一种文件系统,为环境添加更多的灵活性,这是企业级用户最想要的功能。”
事实上,很多用户已经在讨论在Hadoop中运行其他的文件系统,比如IBM的通用并行文件系统,或者用Lustre的文件系统进行高性能集群计算。而YARN的出现,使得MapReduce不再是必需品,而变成了一种选项。
  Gartner分析师Merv Adrian表示,“核心Hadoop”的概念在未来也许将不复存在,数据架构中类似可插拔的选项已经提上了Hadoop的议事日程,任何层面都不再是只提供唯一解决方案,万事皆有可能。
  Hadoop以及相关工具在近几年中层出不穷,Adrian向TechTarget记者表示,当Web应用开发者开始决定创建一个专有数据存储之后,他们往往会选择把它开源。
  Adrian说:“Hadoop社区是吸引创新的支点,但Gartner建议企业用户尽量使用商用版的Hadoop解决方案。免费下载的开源产品可以用来进行沙盒实验。”
  用Adrian的话来说,近些年来发生的最大变化是数据存储的“爆炸”,许多都跟NoSQL相关。人们开始质疑传统SQL数据模型存在的弊端,而Hadoop更像是一个大的帐篷,把包括NoSQL运动在内的所有数据相关变化全部包容在内。
  这一变化的原因包括三点:首先,大规模扩展的关系型数据库系统成本过于昂贵;其次,数据库Schema的限制往往成为创新的阻力;最后,关系型数据库不能很好地支持Web应用。
  现在,关注各种类型数据存储的架构师和开发者都能够在Hadoop生态系统中找到他们想要的。在Hadoop峰会上,关于新范式的热情是显而易见的,就如同几年前Java和AJAX一样。Java语言是新时代应用开发的起点,AJAX也同样。如今的Hadoop与AJAX很像,成为一个符号化的概念,而围绕它的技术或者编程语言才是实体。
  很重要的一个观点是,Hadoop社区在做的事情代表了数据管理的一个主要发展方向。这些有着奇奇怪怪名称的开源工具以及API将能够让开发者以更创新的方式开发大数据应用,而这在之前是难以实现的。
http://www.searchbi.com.cn/showcontent_74554.htm

Java开发者不一定最适合Hadoop

JNAN DASH的一位(IBM数据仓库BI)专家朋友几周前参加了在圣何塞举行的Hadoop会议。两年前也是这个时间,他参加了当时在纽约的Hadoop会议,但当时仅有200人,而这次不仅有2000多人参加,并且门票早已销售一空。显然,这很直观地证明了Hadoop会议引发了业内高度的兴趣。不止如此,他发现每一个主题演讲的PPT中有关Hadoop技术的幻灯片中都提到“我们正在招聘(we are hiring)”。
人才缺乏由此可见一斑。作为一个能够对大量数据进行分布式处理的软件框架,Hadoop可靠、高效而可伸缩。由于Hadoop很容易实现对搜索关键字进行内容分类,并可以通过并行处理加快处理速度,所以受到更行业的欢迎。而Hadoop带有用Java 语言编写的框架,因此在Linux生产平台上很理想。而在Hadoop上的应用程序也可以使用其他语言编写,比如 C++。
事实上,Hadoop使廉价服务器的大规模并行计算成为可能。企业可以收集更多的数据,保留时间可以更长,并对所有数据可以进行之前由于成本、复杂性和缺乏工具而无法进行的分析。互联网企业几乎都是Hadoop的用户,而如eBay、Facebook、LinkedIn、Netflix和Twitte的创新型尝试也为其他数据密集型行业,如金融、科技、电信和政府的应用铺平了道路。越来越多的IT人发现,Hadoop已经在其架构规划中占据一席之地。但Hadoop成为绝对主流的另一大挑战是,如何找到擅长这一技术的专业人才。
Cloudera、IBM、Hortonworks、MapR是值得关注的四家Hadoop企业。而这几家都有大量投资于培训计划,教IT专业人员如何部署,配置和管理Hadoop的产品。显然,这些企业清楚地认识到,人才将是限制Hadoop企业级应用发展不容回避的问题。
但另一面,Cloudera的客户解决方案副总裁Omer Trajman却表示:“直接雇佣新人是不可思议的。”在他看来,“最可行的办法是在企业内部寻找人才来学习Hadoop。”因为,“最成功的公司一般不需要大举招聘。因为在企业内部,完全可以了解员工的基本技能,比如谁有科学、统计、数据处理、利用Java来开发和分析的背景,找到这些已经在相关业务领域中拥有专门知识的人才,然后再做Hadoop培训,教会他们如何使用Hadoop工具,就可以成为合格的人才。”
当然,随着对Hadoop的重视程度更高,业内学习Hadoop的人也在增加。相关业内人士表示:“几年前我在面试技术人员时,问他们是否认识Hadoop?而通常的答案是ha-what?但是如今,知道和运用Hadoop的人已经越来越多了。”
不过,问题也随之而来。企业需要明确什么样类型的人是适合招聘的Hadoop人才?
“我们原以为需要找一个铁杆的Java开发者”,MapR商业分销Return Path的负责人表示,“但事实并非如此。最适合Hadoop的人才不一定是Java工程师。反而是那些能够理解集群、收集一些工具,指出如何实现协同工作,并能处理Hadoop生态系统中出现的许多问题,而并不仅限于Hadoop 1.0的人才是我们需要的技能型人才。”
这篇文章发表在:2012-07-13