大規模な分散コンピューティングデータを読み取るために20分[スイッチ]

これは私がユーザーフレンドリーな分散型非コンピュータ職歴の友人明確なビッグデータのためのコンピューティング技術の例と一緒に暮らすことを願って、記事の人気の科学の本質です。ビッグデータ技術は他のストレージ、計算や複雑な技術の一連の分析が含まれるが、それは常に、分散コンピューティングの中核となっているが、大規模なデータを使用して、技術を理解したい、それは最初からコンピューティング・モデルを配布したMapReduceことがあります。理論モデルをGoogleがリリースされた、早ければ2004年のように、新しい概念ではありません、開発の10年後、道路がビッグデータテクノロジー、そのMapReduceのように記述することができ、現在の大規模な生態学的データの礎となっているようです。

従来のコンピューティング技術

分散コンピューティング技術の概念に入る前に、まずコンピュータ関連分野の概念を作るために鮮やかに簡単な言葉で、私たちは人間のコンピュータのアナロジーを望むことができ、従来のコンピューティング技術を見ている必要があります。

 
 

この図では、このチャートを読むこと自分を理解することができた後、あなたがしている場合は、そのようなメモリ、中央処理装置(CPU)など、いくつかの漠然とした概念がありますが、私は信じて、コンピュータのアナロジーの基本的な要素を確立したが、問題を説明するのに十分な厳格されていません効果。私たちは人間界に精通しているため、このアナロジーの関係で、私たちは今、誰もが、例えば、あなたが所有し、私たちは「コンピュータコードネームされてから、コンピュータ分野の変換の問題に問題を置くことができる 人とコンピュータ 」、あなたは基本的なを持っていますあなたには、いくつかのコンピューティングタスクを実行するように、良い命令セットのシリーズ-コンピュータコンポーネント、神は、プログラマがプログラムを書くことができます。

 

ここでは、単純なケースを使用し、「人間計算機」の分析は、従来のコンピューティング技術は実用的な問題を解決する方法です。始める前に、キャップされるメモリの通常のコンピュータとして定義された数を増やすために、私たちの「人間コンピュータは、」我々が想定する上限メモリでもあり、ほとんどの「人間とコンピュータ」でのことができ、同時に「メモリ」でこのことを念頭に置いてりんご、梨や果物の他の4つの種類の数次のような情報の4種類を、生きます:

 
 

パフォーマンスが比較的貧しいこの「人間とコンピュータ」であるように見えますが、幸い私たちは、複雑ではないの問題に対処する必要があります: 張と王の数十がありますが、これらのカードは色や大きさ(不確実なカードの王が含まれていません。必ずしも「人間計算機」を与える方法、)カードのデッキを作るていない各スーツのカードの数をカウントするプログラムを設計しますか?
 
 

あなたの答えは口走ることがあります。「ヒューマンコンピュータ」のために、一つずつカウントカードを取って直接脳内の色の各番号は、すべてのカードが報告された4つのスーツの後に処理されたことを覚えておいてください行上の番号。答えが完全に正しい入力装置は結果を表示するために、最終的な出力装置から、データを読み出すために、メモリ内の統計更新を続けると、通常のコンピュータ最も単純なコンピューティングモデルは、このような結果のメモリ・レコードです。
 
 

次の問題は、アップグレード、およびこれらのカードのそれぞれは、符号面の13種類の〜Kの合計でカードを顔の数をカウントすることが困難なことです。どのように我々は、「プログラム」のアップグレードのですか?
 
 

私たちは、まだ使用中、「人間計算機」と「メモリ」は、これらの13枚のカードが顔情報を保存するための4種類の情報のためにその記憶域制限のため、十分なA〜Kなかった場合の前にソリューションを気づきました。コンピュータは、この時点で情報を格納するディスクを使用するために同じ、十分でないメモリであり、書籍は、アナログことができ、我々は多くの情報を覚えて自分ができない見つけたときに、元のアカウントメモリを支援します、実生活の場面にお問い合わせください「ディスク」のExcel文書の店舗で:
 
 

そこにこの問題へのその後の統計カードソリューション:すべての更新は、適切なカードの種類に本の数を数えるポーカーを取り、カードの全てが完了した後に数が直接結果を報告しました。
 
 

伝統的なコンピューティングモデルは、単一のコンピュータである 加算、減算及び特定の一様な規則に従って入力データに実行される他の数学的演算の過程のようにまとめることができ、その後、メモリまたはハードディスクに格納された中間データを生成した結果を出力します 上記の場合、ポーカーは「人間計算機」と「入力データ」、数字と文字を識別することができバイナリコンピュータの世界と同等です。ポーカー統計の数は、「出力」は、あなたがコンピュータの画面上で見ることができる情報に相当しています。
実際には、メモリ、ハードディスクやCPUなど、時計の映画や関与する他の日常の基本的なニーズを計算する際に完了することができます(ただ、スマートフォンも考慮されているパソコンは含まない)単一のコンピュータの基本的なコンポーネントのおかげで、私たちは限りが計算超えていない、オンライン音楽を聴きますCPUを制限する(例えばゴーのようなマンマシン戦争のように)適切に適切に問題はありません、と私たちは人々の成長の材料を満たすために、単一のコンピュータの計算能力を高めるために、メモリ、ハードディスクの最適化およびその他の手段を最適化する必要があると文化的な生活のために必要。

 

さて、十分な背景、のポイントを取得しましょう

ビッグデータ分散コンピューティング

首先,什么是分布式计算?简单点理解就是将大量的数据分割成多个小块,由多台计算机分工计算,然后将结果汇总。这些执行分布式计算的计算机叫做集群,我们仍然延续前文中人和计算机的类比,那么集群就是一个团队,单兵作战的时代已经过去,团队合作才是王道:


 
 

为什么需要分布式计算?因为“大数据”来了,单个计算机不够用了,即数据量远远超出单个计算机的处理能力范围:有时候是单位时间内的数据量大,比如在12306网上买票,每秒可能有数以万计的访问;也有可能是数据总量大,比如百度搜索引擎,要在服务器上检索数亿的中文网页信息。

实现分布式计算的方案有很多,在大数据技术出现之前就已经有科研人员在研究,但一直没有被广泛应用。直到2004年Google公布了MapReduce之后才大热了起来。大数据技术、分布式计算和MapReduce的关系可以用下图来描述,MapReduce是分布式计算在大数据领域的应用:


 
 

MapReduce模型是经过商业实践的成熟的分布式计算框架,与Google的分布式文件系统GFS、分布式数据存储系统BigTable一起,号称Google的大数据“三宝”,为大数据技术的发展提供了坚实的理论基础。但遗憾的是,谷歌并没有向外界公布自己的商业产品,而真正让大数据技术大踏步前进的是按照Google理论实现的开源免费产品Hadoop,目前已经形成了以Hadoop为核心的大数据技术生态圈。


 
 

让我们回到数扑克牌这个例子中,大数据时代的扑克牌问题是什么样子的?

  1. 输入数据的规模增加:扑克牌暴增到数万张
  2. 中间运算数据的规模增加:问题又升级了,我们需要统计52种牌型每种牌型出现的次数
  3. 处理时间有限制:我们希望能尽快得到统计结果


     
     

    怎么样,有没有感觉到大数据扑面而来。要知道我们的“人型计算机”的“内存“和“硬盘”是有容量限制的,52种牌型的信息已经超出了单台计算机的处理能力。当然这里会有人提出质疑,认为扩充内存或者磁盘容量就可以解决这个问题,52种牌型完全不需要分布式计算。那大家考虑一下假如这堆牌中有几百种、甚至几千种牌型呢?


     
     

    だから我々は、単一のコンピュータが同じ時間をとても多くのデータを扱うことができない持って理解するように、状況の現実を満たすために、カードの52種類は、我々はそれがこの大きな動きのMapReduceをリリースする時が来た、複数のコンピュータとのコラボレーションする必要があります。

シャッフル」、一緒に除算、変更、洗浄を、「セグメンテーション」、「変換」を表します。私は個人的にいくつかの情報を見上げ、いくつかの練習後にそのMapReduceの技術は、単に戦術を総括する4つの単語を使用することができませんでした「4つのステップを」マージ「:


 
 

4文字の戦術とデータカードの大きな問題を解決する方法を見てみましょう。

最初のステップ、セグメンテーション:入力データを複数の部分に切断することによって

シングル「コンピュータの人々が」完全にポーカーのすべてを処理することはできませんので、我々はランダムに複数の部分に分割カードを入れて、「コンピュータの人」とは、単一のコンピュータ処理の上限を超えていない番号を処理することにより、各トランプ、そして、比較的平均の各番号を作ろうとしています。


 
 

ここでは、確かに役割分担がなければならない、我々はデータのセグメント化を担当して入れ、「人間とコンピュータ」は、通常、一つだけ(で「司令官」、「司令官」として理解することができ、役割分担、複数のコンピュータの連携の問題について話します実際にはより多くのがあるかもしれない)、彼の所有の不動産のような座標スケジューリングします。特定の操作タスク「ヒトコンピュータ」の実装を担当する第二の工程は、「共計算兵士を」前責任を「兵士を計算変更」および「変換」に分けた実施のタスクに応じて「兵士コンピューティング」、「計算兵士」であります後者は最終段階に責任がある「合併。」


 
 

「兵士の計算」の総数は、もちろん、より優れているが、「変化の計算の兵士」とそれぞれの株の比率が固定されていない「兵士が一緒にコンピューティング」、およびデータ調整の動作のどのくらい効率に従って行うことができます。軍は十分な時間がないときは、兵士の計算は、「司令官」、二つの役割を持つことができますだけでなく、現実には複数のタスクを処理することができ、複数のコンピュータが存在するため、「コンピューティング兵士」としての役割を果たすことができると仮定し、理論的にはコンピュータを伝える多くの役割を再生することができます。

分割カードは、対応する部分にポーカーを分割するためには良い「変数計算兵士」と「共同計算兵士」の数、および「変更計算兵士」の番号が割り当てられます前に、「司令官」、各部品ポーカーは「変化算出兵士」は、次のステップを与えます。


 
 

第二ステップ、変換は各入力データマッピング変換を行う(すなわちMapReduceの地図)

每一个“变计算兵”都要对自己分得的每一张扑克牌按照相同的规则做变换,使得后续的步骤中可以对变换后的结果做处理。这种变换可以是加减乘除等数学运算,也可以是对输入数据的结构的转换。例如对于我们这个扑克牌问题来讲,目的是为了计数,所以可以将扑克牌转换为一种计算机更容易处理的数值结构:将每张扑克牌上贴一张小便签,这条小便签上写明了其个数为1。


 
 

我们把这种贴了标签的扑克牌叫做变种扑克牌。当在后续的步骤中统计牌型个数时,只需要把每个标签上的数字加起来就可以。有的朋友肯定会好奇为什么不让每个“计算兵”直接统计各自的所有牌型的扑克的个数,这是因为这种“映射变换”运算的本质在于将每张扑克牌都进行同一种相同规则的变换,统计个数的工作要留在最后一步完成。严格的流水化操作,会让整体的效率更高,而且变换的规则要根据具体问题来制定,更容易适配不同种类的计算。

第三步,洗牌:把变换后的数据按照一定规则分组

变换的运算完成之后,每个“变计算兵”要将各自的变种扑克牌按照牌型分成多个小份,每个小份要最终被一个指定的“合计算兵”进行结果合并统计,这个过程就是“洗牌”,是“变计算兵”将变换后的扑克牌按照规则分组并分配给指定的“合计算兵”的过程。


 
 

洗牌分两个阶段,第一阶段是每个“变计算兵”将变种扑克牌按照一定的规则分类,分类的规则取决于每个“合计算兵”的统计范围,分类的个数取决于“合计算兵”的个数。如上图所示,假设有3个“合计算兵”分别负责不同范围的牌型的统计,那么“变计算兵”需要根据每个“合计算兵”负责的牌型将自己的变种扑克牌分成3个小份,每份交给对应的“合计算兵”。洗牌的第二阶段,“合计算兵”在指挥官的指挥下,去各个“变计算兵”的手中获取属于他自己的那一份变种扑克牌,从而使得牌型相同的扑克牌只会在一个“合计算兵”的手上。洗牌的意义在于使相同牌型的变种扑克牌汇聚在了一起,以便于统计。


 
 

第四步,合并:将洗牌后的数据进行统计合并(也就是MapReduce中的Reduce)

“合计算兵”将手中的变种扑克牌按照相同的计算规则依次进行合并,计算规则也需要根据具体问题来制定,在这里是对扑克牌上标签的数值直接累加,统计出最终的结果。


 
 

然后所有的“合计算兵”把自己的计算结果上交给“指挥官”,“指挥官”汇总后公布最终统计的结果。


 
 

总结

ok,“分变洗合”四字诀介绍完毕,完整过程如下:


 
 

分布式处理技术在逻辑上并不复杂,但在具体的实现过程中会有很多复杂的过程,譬如“指挥官”如何协调调度所有的“运算兵”,“运算兵”之间如何通信等等,但对于使用MapReduce来完成计算任务的程序员来讲,这些复杂的过程是透明的,分布式计算框架会自己去处理这些问题,程序员只需要定义两种计算规则:第二步中变换的规则和第四步中合并的规则。

正所谓大道至简,万变不离其宗,理解了MapReduce就理解了大数据分布式处理技术,而理解大数据分布式处理技术,也就理解了大数据技术的核心。



作者:LeonLu
链接:https://www.jianshu.com/p/094c5aab1fdb
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

おすすめ

転載: www.cnblogs.com/landv/p/11730198.html