case-kの備忘録

備忘録です。GCPやデータ分析系のことを呟きます。

【環境構築入門】分散処理から理解する、並列分散処理の誕生背景

今更ではあるのですが、分散処理について記事を書いてみました。大規模データを扱うために、HadoopやSparkといった並列分散処理に特化したミドルウェアがありますが、いまいち誕生背景など理解できてなかったので記事にしました。

分散処理とは

近年大規模データを取り扱う機会が増え、膨大なデータを処理するために1台のサーバだけで処理することは難しいのが現状です。
そこで、1台のサーバが行う処理を複数のサーバに分散して処理を行うことで、大規模データを高いスループットで処理できるようになりました。
このように1つの処理を複数のサーバ間で分散して処理する方式のことを分散処理といいます。
分散処理には以下の2つの方式が考えられます。

  • 1台のサーバコア数を増やす方法

  • 複数のサーバで分散して行う方法

前者はスケールアップと呼ばれ、後者はスケールアウトと呼ばれています。
スケールアップはサーバの台数(処理ノード数)は変えず個々のサーバの能力アップであり
スケールアウトはサーバの台数(処理ノード数)を増やすことによる能力アップを意味します。

スケールアップ
f:id:casekblog:20180822215701p:plain:w400
スケールアウト
f:id:casekblog:20180822215720p:plain:w400



個々のサーバの能力アップとはCPUの性能アップ[コア・スレッド数の向上]やメモリ容量の増強を意味します。
昔はCPUの性能といえば「クロック周波数」の高さでしたが最近は「コア数」や「スレッド数」の方がCPUの性能を語る上で重要になってきているようです。

CPUの基礎知識

CPUに関する用語が出てきたので、簡単にCPUについて説明します。
CPUとは中央演算処理装置のことでコンピューターの中枢部分にあたり、各種装置を制御したり、データを処理します。

クロック周波数とは
クロックと呼ばれる、回路が処理の歩調をあわせるために用いる信号が、1秒間に何回発生するかを示す値です。
クロック周波数の値が高ければ、それだけ多くの処理が同一時間内にこなせるため処理性能が高いということになります。

コア数とは
コア数とはCPU内に含まれる中央処理ユニット数であり、仕事をこなす頭脳の数です。
CPUという殻の中にいくつCPUが入っているかを表しており、この中に入っているCPUの数がコア数です。
一般的にこのコア数が増えると性能が向上します。
イメージとしてはCPUが複数に増えることで[マルチコア化]頭脳が増えます。
f:id:casekblog:20180822212752p:plain:w400 f:id:casekblog:20180822212810p:plain:w400
1人で処理できなかったことが、4人に増えたことで同時に処理できる仕事の数が増えます。
f:id:casekblog:20180822212847p:plain:w500
コア数が多いとスレッド数が増えるため処理速度が向上します。

スレッド数とは
スレッド = CPUが担当できる仕事の数です。スレッド数は、1つのCPUが同時に処理できる仕事の数なのでCPUが2つスレッド数が4の場合、2×4=8つの仕事を同時に行うことができます。
f:id:casekblog:20180822212908p:plain:w200

分散処理のメリット・デメリット

一般的にビックデータの扱いはスケールアップではなく、スケールアウトが用いられます。
スケールアップとスケールアウトのメリットは以下の通りです。

スケールアップ

  • メリット

 [1] マシンが1台で済むため管理が用意

  • デメリット

 [1] コストと性能は比例しないため、結果的に高くなることが多い
 [2] 1台のみで運用してしまうと、リプレースのときにサービス停止が必要となる

スケールアウト

  • メリット

 [1] スケールアップより安価に性能向上をできる
 [2] サービスを停止することなく、維持管理できる
 [3] サーバ費用が安価

  • デメリット

 [1]ノード管理の煩雑さ
スケールアウトの方が低価格で高速に処理できる一方でノードを増やすことは煩雑でプロセス起動・監視・プロセス間の通信等の管理、データ処理の効率的な分散、特定ノード故障時の動作など、複雑な考慮が必要不可欠でした。
そのため、並列処理できるノードは4-5台程度であり、並列処理できるデータ量には限界がありました。

ミドルウェアの誕生 [並列分散処理]

安価で大規模データを扱うスケールアウト方式でも、ノードの管理の複雑さにより制限がありました。この課題を解決するため、Hadoopなどの分散並列処理に特化したミドルウェアが誕生しました。ノードの追加・管理が容易になったことで、これまで困難とされていた数ペタバイト級のデータの処理の分散処理を可能としました。
次は並列分散処理に特化したミドルウェアを記事に紹介したいと思います。