• 大数据处理的趋势五种开源技术介绍


    作者:杨鑫奇

    本篇文章是一篇翻译文章,对未来大数据领域的技术进行一些前瞻性的介绍,个人感觉他写的文章还是很好的,推荐的技术也具有的一定的代表性,遂将本篇文章翻译出来,感兴趣的大家能够看看。

    大数据领域的处理,我自己本身接触的时间也不长,正式的项目还在开发之中,深受大数据处理方面的吸引,所以也就有写文章的想法的了。

    原文链接:

    http://techcrunch.com/2012/10/27/big-data-right-now-five-trendy-open-source-technologies/


    Big Data is on every CIO’s mind this quarter, and for good reason. Companies will have spent $4.3 billion on Big Data technologies by the end of 2012.
    大数据由于种种原因引起CIO的广泛关注。截止2012年底,在大数据领域公司花费的研发成本将达到4.3亿美元。

    But here’s where it gets interesting. Those initial investments will in turn trigger a domino effectof upgrades and new initiatives that are valued at $34 billion for 2013, per Gartner. Over a 5 year period, spend is estimated at $232 billion.
    这就是有趣的地方。由Gartner咨询公司提供的数据表面:这些创投公司将触发多米若效应,这些公司在2013年总市值将达到34亿美元,未来5年预估将达到232亿美元。

    What you’re seeing right now is only the tip of a gigantic iceberg.
    这只是看到的冰山一角。
    Big Data is presently synonymous with technologies like Hadoop, and the “NoSQL” class of databases including Mongo (document stores) and Cassandra (key-values). Today it’s possible to stream real-time analytics with ease. Spinning clusters up and down is a (relative) cinch, accomplished in 20 minutes or less. We have table stakes.
    大数据以Hadoop以及"NO SQL"为主的Mongo和Cassandra等数据库技术在展现。现在数据的实时分析将可能容易一些。现在集群的转换将越来越可靠,20分钟以内就能够完成。因为我们用表来支持?
    But there are new, untapped advantages and non-trivially large opportunities beyond these usual suspects.
    但是这些是仅仅是一些比较新的,未开发的优点和不平凡的大机会超过了这些常规的猜想。

    Did you know that there are over 250K viable open source technologies on the market today? Innovation is all around us. The increasing complexity of systems, in fact, looks something like this:
    你知道么,在现在的市场上超过25万个开源技术出现了。围绕在我们身边,这些越来越复杂的系统,就像我们看到的这样,看如下图表:

    We have a lot of…choices, to say the least.
    在最少选择的情况下我们还是有很多选择的机会。

    What’s on our own radar, and what’s coming down the pipe for Fortune 2000 companies? What new projects are the most viable candidates for production-grade usage? Which deserve your undivided attention?
    哪些是你的目标?哪些是2000家公司接下来的财富?哪些项目是可以在真正的产品阶段使用的作为可靠的候选?哪些应该受到特别关注呢?

    We did all the research and testing so you don’t have to. Let’s look at five new technologies that are shaking things up in Big Data. Here is the newest class of tools that you can’t afford to overlook, coming soon to an enterprise near you.
    我们做了详细的研究和测试,让我们一起看下5种新的撼动大数据的技术。这些是整理的几组新的工具,让我们一起来看看吧。
    STORM AND KAFKA
    Storm and Kafka are the future of stream processing, and they are already in use at a number of high-profile companies including Groupon, Alibaba, and The Weather Channel.
    Storm 和 Kafka 是未来数据流处理的主要方式,它们已经在一些大公司中使用率饿,包括 Groupon,阿里巴巴和The Weather Channel等

    Born inside of Twitter, Storm is a “distributed real-time computation system”. Storm does for real-time processing what Hadoop did for batch processing. Kafka for its part is a messaging system developed at LinkedIn to serve as the foundation for their activity stream and the data processing pipeline behind it.

    Storm,诞生于Twitter,是一个分布式实时计算系统。Storm 设计用于处理实时计算,hadoop主要用于处理批处理运算。
    kafka是由LinkedIn研发的一款消息系统作为一个数据处理的管道基础部分存在于系统中。

    When paired together, you get the stream, you get it in-real time, and you get it at linear scale.
    当你一起使用它们,你就能实时地和线性递增的获取数据。

    Why should you care? 你为什么需要关心?
    With Storm and Kafka, you can conduct stream processing at linear scale, assured that every message gets processed in real-time, reliably. In tandem, Storm and Kafka can handle data velocities of tens of thousands of messages every second.
    使用Storm和Kafka,使得数据流处理线性的,确保每条消息获取都是实时的,可靠的。前后布置的Storm和Kafka能每秒流畅的处理10000条数据。

    Stream processing solutions like Storm and Kafka have caught the attention of many enterprises due to their superior approach to ETL (extract, transform, load) and data integration.
    像Storm和Kafka这样的数据流处理方案使得很多企业引起关注并想达到优秀的ETL(抽取转换装载)的数据集成方案。

    Storm and Kafka are also great at in-memory analytics, and real-time decision support. Companies are quickly realizing that batch processing in Hadoop does not support real-time business needs. Real-time streaming analytics is a must-have component in any enterprise Big Data solution or stack, because of how elegantly they handle the “three V’s” — volume, velocity and variety.
    Storm 和 Kafka 也很擅长内存分析和实时决策支持。企业使用批量处理的Hadoop方案无法也难怪对实时的业务需求。在企业的大数据解决方案中实时数据流处理是一个必要的模块,因为它很优美的处理了“3v”--volume,velocity 和 variety (容量,速率和多样性)

    Storm and Kafka are the two technologies on the list that we’re most committed to at Infochimps, and it is reasonable to expect that they’ll be a formal part of our platform soon.
    Storm和Kafka这2种技术是我们(infochimps)最推荐的技术,它们也将作为一个正式组成部分存在于我们的平台中。

    DRILL AND DREMEL
    Drill and Dremel make large-scale, ad-hoc querying of data possible, with radically lower latencies that are especially apt for data exploration. They make it possible to scan over petabytes of data in seconds, to answer ad hoc queries and presumably, power compelling visualizations.
    Drill和Dremel 实现了快速低负载的大规模,即席查询数据搜索。它们提供了秒级搜索P级别数据的可能,来应对即席查询和预测,及提供强大的虚拟化支持。

    Drill and Dremel put power in the hands of business analysts, and not just data engineers. The business side of the house will love Drill and Dremel.
    Drill和Dremel提供强大的业务处理能力,不仅仅只是为数据工程师提供。业务端的大家都将喜欢Drill和Dremel.

    Drill is the open source version of what Google is doing with Dremel (Google also offers Dremel-as-a-Service with its BigQuery offering). Companies are going to want to make the tool their own, which why Drill is the thing to watch mostly closely. Although it’s not quite there yet, strong interest by the development community is helping the tool mature rapidly.
    Drill 是Google的Dremel的开源版本。Dremel是Google提供的支持大数据查询的技术。公司将用它来开发自己的工具,这些是导致大家都密切的关注Drill的原因。虽然这些不是起步,但是开源社区强烈的兴趣使得它变得更成熟。
    Why should you care? 为什么你应该关心?
    Drill and Dremel compare favorably to Hadoop for anything ad-hoc. Hadoop is all about batch processing workflows, which creates certain disadvantages.
    Drill和Dremel相比Hadoop更好的分析即席查询。Hadoop仅仅提供批量的数据处理工作流,这些也是缺点。

    The Hadoop ecosystem worked very hard to make MapReduce an approachable tool for ad hoc analyses. From Sawzall to Pig and Hive, many interface layers have been built on top of Hadoop to make it more friendly, and business-accessible. Yet, for all of the SQL-like familiarity, these abstraction layers ignore one fundamental reality – MapReduce (and thereby Hadoop) is purpose-built for organized data processing (read: running jobs, or “workflows”).
    Hadoop生态圈使得MapReduce作为一个很亲切有利的工具应用于广告分析。从Sawzall到Pig到Hive,很多接口层应用的建立使得Hadoop更为友好,更接近业务,但是,像SQL体系,这些抽象层忽略一个重要的事实--MapReduce(或Hadoop)是为了系统化数据处理流程而存在的。

    What if you’re not worried about running jobs? What if you’re more concerned with asking questions and getting answers — slicing and dicing, looking for insights?
    如果你不担心跑的哪些任务? 如果你不关心这些产生的问题和去寻求答案,那就保持沉默,保持洞察力。

    That’s “ad hoc exploration” in a nutshell — if you assume data that’s been processed already, how can you optimize for speed? You shouldn’t have to run a new job and wait, sometimes for considerable lengths of time, every time you want to ask a new question.
    “即席探索" -- 如果你已经承担数据处理,你这么优化处理的速度?你不应该运行一个新的任务或者是等待,有时候考虑的时间还不如在问个新的问题。

    In stark contrast to workflow-based methodology, most business-driven BI and analytics queries are fundamentally ad hoc, interactive, low-latency analyses. Writing Map Reduce workflows is prohibitive for many business analysts. Waiting minutes for jobs to start and hours for workflows to complete is not conducive to an interactive experience of data, the comparing and contrasting, and the zooming in and out that ultimately creates fundamentally new insights.
    在堆对比的工作流基础的方法论中,很多业务驱动的BI和分析查询都是很基本的和临时交互的,低延时分析。写Map/Reduce工作流在很多业务分析中是被禁止的。等待几分钟等Jobs启动,在等几个小时等执行完成这些无溢于数据的交互体验,这些对比,和缩放比较最终产生了基本的新的视野。

    Some data scientists even speculate that Drill and Dremel may actually be better than Hadoop in the wider sense, and a potential replacement, even. That’s a little too edgy a stance to embrace right now, but there is merit in an approach to analytics that is more query-oriented and low latency.
    一些数据科学家早已经推测Drill和Dremel将优于Hadoop,并达成共识,也有一些还在考虑中,还有少部分的狂热者立即拥抱变化,但是这些是主要的优点在更面向查询的和低延时的情况下。

    At Infochimps we like the Elasticsearch full-text search engine and database for doing high-level data exploration, but for truly capable Big Data querying at the (relative) seat level, we think that Drill will become the de facto solution.
    在Infochimps我们喜欢使用Elasticsearch全文索引引擎来实现数据库的数据搜索,但是真的在大数据处理中我们认为Drill将成为主流。


    R is an open source statistical programming language. It is incredibly powerful. Over two million (and counting) analysts use R. It’s been around since 1997 if you can believe it. It is a modern version of the S language for statistical computing that originally came out of the Bell Labs. Today, R is quickly becoming the new standard for statistics.
    R是开源的强大的统计编程语言。自1997年以来,超过200万的统计分析师使用R。这是一门诞生自贝尔实验室的在统计计算领域的现代版的S语言并迅速地成为了新的标准的统计语言。

    R performs complex data science at a much smaller price (both literally and figuratively). R is making serious headway in ousting SAS and SPSS from their thrones, and has become the tool of choice for the world’s best statisticians (and data scientists, and analysts too).
    R使得复杂的数据科学变得更廉价。R是SAS和SPASS的重要的领头者,并作为最优秀的统计师的重要工具。

    Why should you care? 为什么你应该关心?
    Because it has an unusually strong community around it, you can find R libraries for almost anything under the sun — making virtually any kind of data science capability accessible without new code. R is exciting because of who is working on it, and how much net-new innovation is happening on a daily basis. the R community is one of the most thrilling places to be in Big Data right now.
    因为它有一个非凡强大的社区在支持着,你可以找到所有的R的类库,创建虚拟的各类型的科学数据而不用新写代码。R之所以令人兴奋是因为维护他的人和新的每天的创造。R社区是大数据领域令人兴奋的地方之一。
    R is a also wonderful way to future-proof your Big Data program. In the last few months, literally thousands of new features have been introduced, replete with publicly available knowledge bases for every analysis type you’d want to do as an organization.
    R在大数据领域是一个超棒的不会过时的技术。在最近的几个月里,几千个新特性被日益公开的知识基础为主的分析类型的分析师们介绍.

    Also, R works very well with Hadoop, making it an ideal part of an integrated Big Data approach.
    而且,R和Hadoop协同的很好,作为一个大数据的处理的部分已经被证明了。
    To keep an eye on: Julia is an interesting and growing alternative to R, because it combats R’s notoriously slow language interpreter problem. The community around Julia isn’t nearly as strong right now, but if you have a need for speed…
    保持关注:Julia ,是一个有趣的R的替代者,因为它不喜欢R的死慢死慢的解释器。Julia的社区虽然不怎么强大现在,但是如果你不是立即使用它的话,还是可以等等的。

    GREMLIN AND GIRAPH Gremlin and Giraph help empower graph analysis, and are often used coupled with graph databases like Neo4j or InfiniteGraph, or in the case of Giraph, working with Hadoop. Golden Orbis another high-profile example of a graph-based project picking up steam.
    Gremlin 和 Giraph 帮助增强图形分析,并在图数据库像Neo4j和InfiniteGraph中被使用,和与Hadoop协同工作的Giraph中被使用。Golden Orb是另一个高层面的流处理的图基础的项目的例子。可以看看。
    Graph databases are pretty cutting edge. They have interesting differences with relational databases, which mean that sometimes you might want to take a graph approach rather than a relational approach from the very beginning.
    图数据库是富有魅力的边缘化的数据库。它们和关系型数据库相比,有着很多有趣的不同点,这个是当你在开始的时候总是想用图理论而不是关系型理论。

    The common analogue for graph-based approaches is Google’s Pregel, of which Gremlin and Giraph are open source alternatives. In fact, here’s a great read on how mimicry of Google technologies is a cottage industry unto itself.
    另一个类似的图基础的理论是Google的Pregel,相比来说Gremlin和Giraph是其的开源替代。实际上,这些都是Google技术的山寨实现的例子。

    Why should you care? 为什么要关新?
    Graphs do a great job of modeling computer networks, and social networks, too — anything that links data together. Another common use is mapping, and geographic pathways — calculating shortest routes for example, from place A to place B (or to return to the social case, tracing the proximity of stated relationships from person A to person B).
    图在计算网络建模和社会化网络方面发挥着重要作用,能够连接任意的数据。另外一个经常的应用是映射和地理信息计算。从A到B的地点,计算最短的距离。
    Graphs are also popular for bioscience and physics use cases for this reason — they can chart molecular structures unusually well, for example.
    图在生物计算和物理计算领域也有广泛的应用,例如,他们能绘制不寻常的分子结构。

    Big picture, graph databases and analysis languages and frameworks are a great illustration of how the world is starting to realize that Big Data is not about having one database or one programming framework that accomplishes everything. Graph-based approaches are a killer app, so to speak, for anything that involves large networks with many nodes, and many linked pathways between those nodes.
    海量的图,图数据库和分析语言和框架都是一种现实世界上实现大数据中的一部分。图基础的理论是一个杀手级的应用,为什么这么说?任何一个解决大型网络节点问题,都是通过节点和节点之间的路径来处理的。

    The most innovative scientists and engineers know to apply the right tool for each job, making sure everything plays nice and can talk to each other (the glue in this sense becomes the core competence).
    很多富有创造力的科学家和工程师们,都很明白的用正确的工具来解决对应的问题。确保他们都能运行的漂亮并能被广泛传播。

    SAP HANA
    SAP Hana is an in-memory analytics platform that includes an in-memory database and a suite of tools and software for creating analytical processes and moving data in and out, in the right formats.
    SAP Hana 是一个全内存的分析平台,它包含了一个内存数据库和一些相关的工具软件用来创建分析流程和规范正确的格式来进行数据的输入输出。
    Why should you care? 为什么应该关心?
    SAP is going against the grain of most entrenched enterprise mega-players by providing a very powerful product, free for development use. And it’s not only that — SAP is also creating meaningful incentives for startups to embrace Hana as well. They are authentically fostering community involvement and there is uniformly positive sentiment around Hana as a result.
    SAP 开始反对为固化的企业用户提高强大的产品,供开发免费使用。这个不仅仅是SAP开始为初创着想,让其使用Hana。他们授权培养社区解决方案,这些不寻常的做法是围绕Hana的结果。

    Hana highly benefits any applications with unusually fast processing needs, such as financial modeling and decision support, website personalization, and fraud detection, among many other use cases.
    Hana 假设其他的程序处理时候还不够快的解决遇到的问题,例如,金融建模和决策支持,网站个性化和欺骗检测等等。

    The biggest drawback of Hana is that “in-memory” means that it by definition leverages access to solid state memory, which has clear advantages, but is much more expensive than conventional disk storage.
    Hana最大的缺点是”全内存“这意味着访问软状态的内存,这个是很明确的有点,但是这个也是相比磁盘存储来说很昂贵的部分。

    For organizations that don’t mind the added operational cost, Hana means incredible speed for very-low latency big data processing.
    据组织者说,不用担心操作成本,Hana是快速的地延迟的大数据处理工具。

    HONORABLE MENTION: D3
    D3 doesn’t make the list quite yet, but it’s close, and worth mentioning for that reason.
    D3 本来不在列表中,但是它的亲切感,让我们认为有提它的价值。

    D3 is a javascript document visualization library that revolutionizes how powerfully and creatively we can visualize information, and make data truly interactive. It was created by Michael Bostock and came out of his work at the New York Times, where he is the Graphics Editor.
    D3是一个javascript面向文档的可视化的类库,。它强大的创新性的让我们能直接看到信息和让我们进行正常的交互。
    它的作者是Michael Bostock一个纽约时报的图形界面设计师。
    For example, you can use D3 to generate an HTML table from an array of numbers. Or, you can use the same data to create an interactive bar chart with smooth transitions and interaction.
    例如,你可以使用D3来从任意数量的数组中创建H™l表格。你能使用任意的数据来创建交互进度条等。
    Here’s an example of D3 in action, making President Obama’s 2013 budget proposal understandable, and navigable.
    这里是一个D3的实际例子,创建2013年奥巴马的民意情况。

    With D3, programmers can create dashboards galore. Organizations of all sizes are quickly embracing D3 as a superior visualization platform to the heads-up displays of yesteryear.
    使用D3,程序员能之间创建界面,组织所有的各种类型的数据。

    Editor’s note: Tim Gasper is the Product Manager at Infochimps, the #1 Big Data platform in the cloud. He leads product marketing, product development, and customer discovery. Previously, he was co-founder and CMO at Keepstream, a social media curation and analytics company that Infochimps acquired in August of 2010. You should follow him on Twitter here.


    虽然这篇文章不长,但是也费了我一段实际来翻译,翻译不足之处希望大家指正。其实看到这篇文章的时候,我就很想把它分享给喜欢它的人,得益于一个开放的环境,所以美国在IT领域总是这么的让人惊喜,当然我们也得跟上了。

    开始正式的使用Hadoop已经有近一年的时间的了,这期间从百度出来,到初见在到现在的BitWare,在不同的公司,用不同的技术解决问题。但是本质上遇到的问题总是那么几个,当然现在很多公司也开始尝鲜的使用Hadoop的了。这个是大环境是如此,可以理解。

    以下说说个人对文章的理解:
    Storm和Kafka 从11年起,就开始关注了,Storm在阿里也有部分二线应用,但是整体而言,刚刚满一岁的Storm在nathanmarz大侠的打磨下越来越稳定了,并有部分线上的应用了。所以对这个技术,总体而言,我个人还是很看好的,因为现在使用hadoop无法实现实时的处理,使用HBase来为主要的数据库来使用了,暂时还是能解决,但是还是想尝试下Storm,Kafka的关注不是很多,不过这个配合起来使用,据说很赞,没有自己跑过。

    Drill这个是Apache的开源项目,之前也看了Google Dremel的论文,无奈看不是很懂,现在也没有遇到这样的环境,而且社区才刚刚火起来,所以还没有很多的时间来跟进,暂时先搁置了。

    R语言,之前在百度的时候,隔壁各位做的哥们就在使用R语言干活,这个可能是只有大公司能够有能力去真正的挖掘的方面吧,我们现在的业务中基本没有用到过,对于R还是很陌生,不过我个人任务,在不同的环境下使用不同的技术手段,犹如,博士声光电吹盒子,我们架个电风吹,是一样的实现吧。

    对于图数据库领域,还真的是没有遇到过详细的应用,还没有机会进入这样的公司,所以还是束之高阁吧。

    SPA这个公司,听过名字,但是没有具体的接触过,现在卖解决方案估计也不好过,弄个东西出来提高下知名度还是必须的。现在啃老本的时代已经过去的了。

    最后一个可视化的JS类库,兴趣不大,业务现在不去做前端的了,所以也还好。

     
    标签: 大数据stormhadoopkafkadrilldremel

    杨鑫奇的技术博客

    热衷开源,积极分享!

    hadoop 2.0 详细配置教程

     

    作者:杨鑫奇

    PS:文章有部分参考资料来自网上,并经过实践后写出,有什么问题欢迎大家联系我。

    Hadoop 2.0集群配置详细教程

    前言

    Hadoop2.0介绍

    Hadoop是 apache 的开源 项目,开发的主要目的是为了构建可靠,可拓展 scalable ,分布式的系 统, hadoop 是一系列的子工程的 总和,其中包含
    1. hadoop common : 为其他项目提供基础设施
    2. HDFS :分布式的文件系 统
    3. MapReduce : A software framework for distributed processing of large data sets on compute clusters 。一个 简化分布式编程的框架。
    4. 其他工程包含: Avro( 序列化系 统 ) , Cassandra( 数据 库项目 ) 等  

    Hadoop,以 Hadoop 分布式文件系统( HDFS ,Hadoop Distributed Filesystem )和 MapReduce ( Google MapReduce 的开源实现)为核心的 Hadoop 为用户提供了系统底层细节透明的分布式基础架构。
       对于 Hadoop 的集群来讲,可以分成两大类角色: Master 和 Salve 。一个 HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的。其中 NameNode 作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的 DataNode 管理存 储的数据。 MapReduce 框架是由一个 单独运行在主节点上的 JobTracker 和 运行在每个集群从节点的 TaskTracker 共同 组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个 Job 被提交 时, JobTracker 接收到提交作 业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控 TaskTracker 的 执行。
      从上面的介 绍可以看出, HDFS 和 MapReduce 共同 组成了 Hadoop 分布式系 统体系结构的核心。 HDFS 在集群上 实现分布式文件系统, MapReduce 在集群上 实现了分布式计算和任务处理。 HDFS 在 MapReduce 任 务处理过程中提供了文件操作和存储等支持, MapReduce 在 HDFS 的基 础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了 Hadoop 分布式集群的主要任 务。

    为什么要使用2.0版本(来自董的博客)

    该版本提供了一些新的、重要的功能,包括: 
    • HDFS HA ,当前只能 实现人工切换。
    Hadoop HA 分支 merge 进了该版本,并支持热切,主要特性包括:
    ( 1 )      NN 配置文件有改变,使得配置更加简单
    ( 2 )      NameNode 分 为两种角色: active NN 与 standby NN , active NN 对外提供读写服务,一旦出现故障,便切换到 standby NN 。
    ( 3 )      支持 Client 端重定向,也就是 说,当 active NN 切 换到 standby NN 过程中, Client 端所有的 进行时操作都可以无缝透明重定向到 standby NN 上, Client 自己感 觉不到切换过程。
    ( 4 )      DN 同 时向 active NN 和 standby NN 汇报 block 信息。
    具体 设计文档参考: https://issues.apache.org/jira/browse/HDFS-1623
    当前 Hadoop HA 只能 实现人工切换,该功能在某些情况下非常有用,比如,对 NN 进行升级时,先将 NN 切 换到 standby NN ,并 对之前的 active NN 进行升级,升级完成后,再将 NN 切 换至升级后的 NN 上,然后 对 standby NN 进行升级。

    • YARN ,下一代 MapReduce 这是一套资源统一管理和调度平台,可管理各种计算框架,包括 MapReduce 、 Spark 、 MPI 等。
    YARN 是一套 资源统一管理和调度平台,可管理各种计算框架,包括 MapReduce , Spark , MPI 等。尽管它是完全重写而成,但其思想是从 MapReduce 衍化而来的,并克服了它在 扩展性和容错性等方面的众多不足。具体参考:
    http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/YARN.html
    • HDFS Federation ,允 许 HDFS 中存在多个 NameNode ,且每个 NameNode 分管一部分目 录,而 DataNode 不 变,进而缩小了故障带来的影响范围,并起到一定的隔离作用。
    传统 HDFS 是 master/slave 结构,其中, master (也就是 NameNode )需要存 储所有文件系统的元数据信息,且所有文件存储操作均需要访问多次 NameNode ,因而 NameNode 成 为制约扩展性的主要瓶颈所在。为了解决该问题,引入了 HDFS Federation ,允 许 HDFS 中存在多个 NameNode ,且每个 NameNode 分管一部分目 录,而 DataNode 不 变,也就是 “ 从中央集权 专政变为各个地方自治 ” , 进而缩小了故障带来的影响范围,并起到一定的隔离作用。具体参考:
    http://dongxicheng.org/mapreduce-nextgen/nextgen-mapreduce-introduction/
    • 基准性能测试
    该版本中为 HDFS 和 YARN 添加了性能的基准 测试集,其中 HDFS 测试包括:
    ( 1 )      dfsio 基准 测试 HDFS I/O 读写性能
    ( 2 ) slive 基准 测试 NameNode 内部操作的性能
    ( 3 ) scan 基准 测试 MapReduce 作 业访问 HDFS 的 I/O 性能
    ( 4 )      shuffle 基准 测试 shuffle 阶段性能
    ( 5 )      compression 基准 测试 MapReduce 作 业中间结果和最终结果的压缩性能
    ( 6 )      gridmix-V3 基准 测试集群吞吐率
    YARN     测试包括 :
    ( 1 )      ApplicationMaster 扩展性基准测试
    主要 测试调度 task/container 的性能。与 1.0 版本比 较,大约快 2 倍。
    ( 2 )      ApplicationMaster 恢复性基准 测试
    测试 YARN 重 启后,作业恢复速度。稍微解释一下 ApplicationMaster 恢复作 业的功能:在作业执行过程中, Application Master 会不断地将作 业运行状态保存到磁盘上,比如哪些任务运行完成,哪些未完成等,这样,一旦集群重启或者 master 挂掉,重 启后,可复原各个作业的状态,并只需重新运行未运行完成的哪些任务。
    ( 3 )      ResourceManager 扩展性基准测试
    通 过不断向 Hadoop 集群中添加 节点测试 RM 的 扩展性。
    ( 4 )      小作 业基准测试
    专门测试批量小作业的吞吐率
    具体参考:
    http://hortonworks.com/blog/delivering-on-hadoop-next-benchmarking-performance/
    • 通过 protobufs 来提供HDFS 和YARN 的兼容性
    Wire-compatibility for both HDFS & YARN
    Hadoop RPC采用了Hadoop自己的一套序列化框架 对 各种 对 象 进 行序列化反序列,但存在一个 问题 : 扩 展性差,很 难 添加新的数据类型同 时 保 证 版本兼容性。 为 此,Hadoop 2.0将数据类型模 块 从RPC中独立出来,成 为 一个独立的可插拔模 块 , 这样 允 许 用 户 根据个人 爱 好使用各种序列化/反序列化框架,比如thrift,arvo,protocal Buffer等,默 认 情况采用Protocal Buffer。
    http://hortonworks.com/blog/rpc-improvements-and-wire-compatibility-in-apache-hadoop/
    除了以上五个特性外, 还 有两个非常重要的特性正在研 发 中,分别是:
    • HDFS快照
    用 户 可在任意 时间对 HDFS做快照, 这样 ,在HDFS出 现 故障 时 ,可将数据恢复到某个 时间 点的状 态 。具体参考:
    http://hortonworks.com/blog/snapshots-for-hdfs/
    • HDFS HA自动 切换
    前面介 绍 的第一个功能“HDFS HA”当前只能 实现 人工切 换 ,也就是 说 ,管理 员运 行某个命令,使得acitve NN切 换 到standby NN上。以后将支持自 动 切 换 ,也就是 说 , 监 控模 块 可 检测 出active NN何 时 出 现 故障,并自 动 将之切 换 到standby NN上, 这样 可大大 较 小Hadoop集群 运维 人 员 的工作量。具体参考:
    http://s.apache.org/hdfs-autofailover

    准备

    机器准备

    物理机器 总 共4台,想配置基于物理机的hadoop集群中包括 4 个 节点: 1 个 Master , 3 个 Salve , 节点之间局域网连接,可以相互 ping 通
    Ip分布 为
    192.168.1.201 hadoop1
    192.168.1.202 hadoop2
    192.168.1.203 hadoop3
    192.168.1.204 hadoop4

    操作系 统为 CentOS 5.6 64bit
    Master机器主要配置NameNode和JobTracker的角色, 负责总 管分布式数据和分解任 务 的 执 行;3个Salve机器配置DataNode和TaskTracker的角色, 负责 分布式数据存 储 以及任 务 的 执 行。其 实应该还应该 有1个Master机器,用来作 为备 用,以防止Master服 务 器宕机, 还 有一个 备 用 马 上 启 用。后 续经验积 累一定 阶 段后 补 上一台 备 用Master机器。


    创建账户

    使用root登 陆 所有机器后,所有的机器都 创建 hadoop 用 户
    useradd hadoop
    passwd hadoop

    此 时 在 /home/ 下就会生成一个 hadoop 目 录 ,目 录 路径 为 /home/hadoop

    创建相关的目录

    定 义 需要数据及目 录 的存放路径

    定 义 代 码及工具 存放的路径
    mkdir -p /home/hadoop/source
    mkdir -p /home/hadoop/tools

    定 义 数据 节 点存放的路径到跟目 录 下的hadoop文件夹, 这 里是数据 节 点存放目 录 需要有足够的空 间 存放
    mkdir -p /hadoop/hdfs
    mkdir -p /hadoop/tmp
    mkdir -p /hadoop/log
    设 置可写权限
    chmod -R 777 /hadoop

    定 义 java安装程序路径
    mkdir -p /usr/java


    安装

    安装JDK

    http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html
    在以上 连接 下 载 linux 64 下的 jdk 的安装文件:  jdk-6u32-linux-x64.bin
    1 ,将下 载好的 jdk-6u32-linux-x64.bin 通 过 SSH 上 传到 /usr/java 下
    scp -r ./jdk-6u32-linux-x64.bin root@hadoop1:/usr/java
    2 , 进入 JDK 安装目 录 cd /usr/java 并且 执行 chmod +x jdk-6u32-linux-x64.bin
    3 , 执行 ./jdk-6u32-linux-x64.bin
    4 ,配置 环境变量,执行 cd /etc 命令后 执行 vi profile ,在行末尾添加
    export JAVA_HOME=/usr/java/jdk1.6.0_32
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar
    export PATH=$JAVA_HOME/bin:$PATH
    5 , 执行 chmod +x profile 将其 变成可执行文件
    6 , 执行 source profile 使其配置立即生效
    source /etc/profile
    7 , 执行 java -version 查看是否安装成功

    这个步骤所有机器都必须安装

    [root@hadoop1 bin]# java -version
    java version "1.6.0_32"
    Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
    Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)

    修改主机名

    修改主机名,所有 节点均一样配置
    1 , 连接到主节点 192.168.1.201 ,修改 network , 执行 vim /etc/sysconfig/network ,修改 HOSTNAME=hadoop1
    2 ,修改 hosts 文件, 执行 cd /etc 命令后 执行 vi hosts ,在行末尾添加 :

    192.168.1.201   hadoop1
    192.168.1.202   hadoop2
    192.168.1.203   hadoop3
    192.168.1.204   hadoop4

    3 , 执行 hostname hadoop1
    4 , 执行 exit 后重新 连接可看到主机名以修改 OK

    其他 节点 也修改主机名后添加 Host, 或者 host 文件可以在后面 执行 scp 覆盖操作


    配置SSH无密码登陆

    SSH 无密 码原理简介 :
    首先在 hadoop1 上生成一个密 钥对,包括一个公钥和一个私钥,并将公钥复制到所有的 slave(hadoop2-hadoop4) 上。
    然后当 master 通 过 SSH 连接 slave 时, slave 就会生成一个随机数并用 master 的公 钥对随机数进行加密,并发送给 master 。
    最后 master 收到加密数之后再用私 钥解密,并将解密数回传给 slave , slave 确 认解密数无误之后就允许 master 不 输入密码进行连接了

    2 ,具体步 骤(在root用户和hadoop用户登陆情况下执行)
    1 、 执行命令 ssh-keygen -t rsa 之后一路回 车,查看刚生成的无密码钥对: cd .ssh 后 执行 ll
    2 、把 id_rsa.pub 追加到授权的 key 里面去。 执行命令 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
    3 、修改权限: 执行 chmod 600 ~/.ssh/authorized_keys
    4 、确保 cat /etc/ssh/sshd_config 中存在如下内容

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys
    如需修改, 则在修改后执行重启 SSH 服 务命令使其生效 :service sshd restart

    5 、将公 钥复制到所有的 slave 机器上 :scp ~/.ssh/id_rsa.pub 192.168.1.203 : ~/    然后 输入 yes ,最后 输入 slave 机器的密 码
    6 、在 slave 机器上 创建 .ssh 文件夹 :mkdir ~/.ssh 然后 执行 chmod 700 ~/.ssh (若文件夹以存在 则不需要创建)
    7 、追加到授权文件 authorized_keys 执行命令 :cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 然后 执行 chmod 600 ~/.ssh/authorized_keys
    8 、重复第 4 步
    9 、 验证命令 : 在 master 机器上 执行 ssh 192.168.1.203 发现主机名由 hadoop1 变成 hadoop3 即成功,最后 删除 id_rsa.pub 文件 :rm -r id_rsa.pub
    按照以上步 骤分别配置 hadoop1,hadoop2,hadoop3,hadoop4 ,要求每个都可以无密 码登录

    源码下载

    HADOOP 版本
    最新版本 hadoop-2.0.0-alpha  安装包 为 hadoop-2.0.0-alpha.tar.gz
    下 载官网地址 :http://www.apache.org/dyn/closer.cgi/hadoop/common/
    下 载到 /home/hadoop/source 目录下
    wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-2.0.0-alpha/hadoop-2.0.0-alpha.tar.gz
    解压目录
    tar zxvf hadoop-2.0.0-alpha.tar.gz

    创建软连接
    cd /home/hadoop
    ln -s /home/hadoop/source/hadoop-2.0.0-alpha/ ./hadoop

    源码配置修改

    /etc/profile

    配置 环境变量: vim /etc/profile
    添加
    export HADOOP_DEV_HOME=/home/hadoop/hadoop
    export PATH=$PATH:$HADOOP_DEV_HOME/bin
    export PATH=$PATH:$HADOOP_DEV_HOME/sbin
    export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
    export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
    export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
    export YARN_HOME=${HADOOP_DEV_HOME}
    export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
    export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
    export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop


    创建并配置hadoop-env.sh

    vim /usr/hadoop/hadoop-2.0.0-alpha/etc/hadoop/hadoop-env.sh 
    在末尾添加 export JAVA_HOME=/usr/java/jdk1.6.0_27

     core-site.xml

    在 configuration 节点 里面添加属性

    <property>
    <name>hadoop.tmp.dir</name>
    <value>/hadoop/tmp</value>
    <description>A base for other temporary directories.</description>
    </property>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://192.168.1.201:9000</value>
    </property>

    添加 httpfs 的 选项
    <property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>192.168.1.201</value>
    </property>
    <property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
    </property>


    slave配置

    vim /home/hadoop/hadoop/etc/hadoop/slaves 
    添加 slave 的 IP
    192.168.1.202
    192.168.1.203
    192.168.1.204


    配置hdfs-site.xml

    vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
    添加 节点

    <property>
    <name>dfs.replication</name>
    <value>3</value>
    </property>

    <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/hadoop/hdfs/name</value>
    <final>true</final>
    </property>

    <property>
    <name>dfs.federation.nameservice.id</name>
    <value>ns1</value>
    </property>

    <property>
    <name>dfs.namenode.backup.address.ns1</name>
    <value>192.168.1.201:50100</value>
    </property>

    <property>
    <name>dfs.namenode.backup.http-address.ns1</name>
    <value>192.168.1.201:50105</value>
    </property>

    <property>
    <name>dfs.federation.nameservices</name>
    <value>ns1</value>
    </property>

    <property>
    <name>dfs.namenode.rpc-address.ns1</name>
    <value>192.168.1.201:9000</value>
    </property>
    <property>
    <name>dfs.namenode.rpc-address.ns2</name>
    <value>192.168.1.201:9000</value>
    </property>

    <property>
    <name>dfs.namenode.http-address.ns1</name>
    <value>192.168.1.201:23001</value>
    </property>

    <property>
    <name>dfs.namenode.http-address.ns2</name>
    <value>192.168.1.201:13001</value>
    </property>

    <property>
    <name>dfs.dataname.data.dir</name>
    <value>file:/hadoop/hdfs/data</value>
    <final>true</final>
    </property>

    <property>
    <name>dfs.namenode.secondary.http-address.ns1</name>
    <value>192.168.1.201:23002</value>
    </property>

    <property>
    <name>dfs.namenode.secondary.http-address.ns2</name>
    <value>192.168.1.201:23002</value>
    </property>

    <property>
    <name>dfs.namenode.secondary.http-address.ns1</name>
    <value>192.168.1.201:23003</value>
    </property>

    <property>
    <name>dfs.namenode.secondary.http-address.ns2</name>
    <value>192.168.1.201:23003</value>
    </property>


    配置yarn-site.xml

    添加 节点

    <property>
    <name>yarn.resourcemanager.address</name>
    <value>192.168.1.201:18040</value>
    </property>

    <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>192.168.1.201:18030</value>
    </property>

    <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>192.168.1.201:18088</value>
    </property>

    <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>192.168.1.201:18025</value>
    </property>

    <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>192.168.1.201:18141</value>
    </property>

    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce.shuffle</value>
    </property>


    配置httpfs-site.xml

    同步代码到其他机器

    1.同步配置代 码
    先在 slaves 的机器上也 创 建
    mkdir -p /home/hadoop/source
    部署hadoop代 码 , 创 建 软连接 ,然后只要同步修改 过 的etc/hadoop下的配置文件即可
    2.同步 /etc/profile
    3.同步 /etc/hosts 
    scp -r /etc/profile root@hadoop2:/etc/profile
    scp -r /etc/hosts root@hadoop2:/etc/hosts

    其他机器以此操作


    Hadoop启动

    格式化集群

    hadoop namenode -format -clusterid clustername


    启动hdfs

    执行
    start-dfs.sh

    开 启 hadoop dfs服 务     


    启动Yarn

    开 启 yarn 资 源管理服 务
    start-yarn.sh

    启动httpfs

    开 启 httpfs 服 务
    httpfs.sh start
    使得 对外 可以提高 http 的restful接口服 务


    测试

    安装结果验证

    验证hdfs

    在各台机器 执行 jps 看 进程 是否都已 经启动 了

    [root@hadoop1 hadoop]# jps
    7396 NameNode
    24834 Bootstrap
    7594 SecondaryNameNode
    7681 ResourceManager
    32261 Jps

    [root@hadoop2 ~]# jps
    8966 Jps
    31822 DataNode
    31935 NodeManager

    进程启动 正常

    验证 是否可以登 陆
    hadoop fs -ls hdfs://192.168.1.201:9000/ 
    hadoop fs -mkdir hdfs://192.168.1.201:9000/testfolder 
    hadoop fs -copyFromLocal ./xxxx hdfs://192.168.1.201:9000/testfolder 
    hadoop fs -ls hdfs://192.168.1.201:9000/ testfolder

    看以上 执行 是否正常


    验证map/reduce

    在 master1 上, 创建输入目录 :hadoop fs -mkdir hdfs://192.168.1.201:9000/input
    将 /usr/hadoop/hadoop-2.0.1-alpha/ 目 录下的所有 txt 文件复制到 hdfs 分布式文件系 统的目录里,执行以下命令
    hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input

    在 hadoop1 上, 执行 HADOOP 自 带的例子, wordcount 包,命令如下
    cd /usr/hadoop/hadoop-2.0.1-alpha/share/hadoop/mapreduce
    hadoop jar hadoop-mapreduce-examples-2.0.1-alpha.jar wordcount hdfs://192.168.1.201:9000/input hdfs://192.168.1.201:9000/output

    hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input

    在 hadoop1 上, 查看结果命令如下 :
    [root@master1 hadoop]# hadoop fs -ls hdfs://192.168.1.201:9000/output
    Found 2 items
    -rw-r--r--   2 root supergroup                      0 2012-06-29 22      :59 hdfs://192.168.1.201:9000/output/_SUCCESS
    -rw-r--r--   2 root supergroup       8739 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/part-r-00000

    [root@hadoop1 hadoop]# hadoop fs -cat  hdfs://192.168.1.201:9000/output/part-r-00000 即可看到每个 单词的数量

    验证httpfs

    HTTPFS操作:

    OPEN,GETFILESTATUS,LISTSTATUS,GETHOMEDIRECTORY,GETCONTENTSUMMARY,GETFILECHECKSUM,GETDELEGATIONTOKEN,GETFILEBLOCKLOCATIONS,INSTRUMENTATION

    GETHOMEDIRECTORY 路径无关,返回根 节点路径
    http://192.168.1.201:14000/webhdfs/v1/yxq?op=GETHOMEDIRECTORY&user.name=root

    Path: "/user/root"

    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETHOMEDIRECTORY&user.name=root

    打开 / 下 载一个文件
    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=open&user.name=root

    LISTSTATUS 现实目录状态

    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0?op=LISTSTATUS&user.name=root
    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=LISTSTATUS&user.name=root

    GETFILESTATUS 显示文件的状态
    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILESTATUS&user.name=root

    如果是路径 则现实路径信息
    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/?op=GETFILESTATUS&user.name=root
    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILESTATUS&user.name=root

    GETCONTENTSUMMARY 获取路径下的信息
    http://192.168.1.201:14000/webhdfs/v1/yxq?op=GETCONTENTSUMMARY&user.name=root

    GETFILECHECKSUM 获取文件的校验值
    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILECHECKSUM&user.name=root


    以下 实现 方法 还 有 错误现 在:
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    GETDELEGATIONTOKEN ERROR

    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETDELEGATIONTOKEN&user.name=root

    GETFILEBLOCKLOCATIONS error

    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILEBLOCKLOCATIONS&user.name=root

    INSTRUMENTATION error

    http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=INSTRUMENTATION&user.name=root

    性能测试

    使用内部的 benchmark 测试 不同文件大小及不同append大小的写入情况
    hadoop jar /home/hadoop/hadoop/bin/BitwareHadoopBenchmark.jar BitwareHadoopBenchmark hdfs://192.168.1.201:9000 /bitwaretest01/ 0 20 200 4 0

    参考资料

     http://qmkemail.iteye.com/blog/1612323

    http://dongxicheng.org/mapreduce-nextgen/apache-hadoop-2-0-alpha/


    结语

    hadoop 的配置及使用在不断的更新中

     
  • 相关阅读:
    扫移动护理系统mysql数据库视图的Database通讯点报错Caused by: java.sql.SQLException: Value '00000000 00:00:00' can not be represented as java.sql.Timestamp
    ORACLE sql insert case when
    解决超过4000字符的字符串insert的时候报错ORA01461: 仅能绑定要插入LONG列的LONG值
    将92服务器上面的加解密服务run.bat形式改为后台服务形式
    Oracle调整sga_max_size内存参后报ORA00844和ORA00851 SGA_MAX_SIZE 42949672960 cannot be set to more than MEMORY_TARGET 6979321856. 导致数据库连接不上去,提示ORA01034:ORACLE notavailable
    解决MATLAB一直初始化,加速MATLAB(转载)
    WIN7下隐藏或显示Lenovo_Recovery_Q盘(转载)
    flowable流程中心设计(一)
    mysqlgroup by原理
    SpringMVC系列导航
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2789360.html
Copyright © 2020-2023  润新知