ビッグデータの分析が難しい3個の理由【真実】

皆さん,ビッグデータ分析は難しいという言葉をよく耳にすると思います.

しかし,ビッグデータ分析は,何が難しいのでしょうか?

ほとんどの議論でこのことについては,ぼかされています.

おそらくほとんどの人がぼんやりとしかビッグデータを認識していないためではないでしょうか?

ここでビッグデータの定義をしておきますと,この記事では「データ量がとてつもなく大きなデータ」としたいと思います.

結論から言うと,ビッグデータ分析が難しい理由は下記の3個です.

✔ データを一気に扱う必要がある

✔ データベース系の技術が欠かせない

✔ 実行時間が膨大である(ストレスフル)

まずは,「データを一気に扱う必要がある」ことについて説明します.

もちろんこれに当てはまらないデータもあり,その場合はこの項目は当てはまらないです.それは後ほどお話しします.

さて,私たちがプログラミングなどで例えばある複数データの平均値を求めたい場合,平均を求める関数をつかいますよね?

平均を求める関数は,内部ではメインメモリに格納されているデータをCPUが処理します.

CPUがメインメモリにアクセスする時間は,最近ではナノ秒の単位です.

問題は,平均値を求める関数が扱うデータは「必ず」メインメモリに置かれている必要があります.

さて,ここでメインメモリに収まりきらないような超巨大データ(ファイル)の場合はどうなるでしょうか?

この場合,ストーレージ(ハードディスクなど)にページングが発生します.

メインメモリに一気には収まり切れないデータを少しずつストレージから取り出しながら処理することになります.

ストレージに対するアクセスは,ハードディスクの場合はかなり遅いです.

メインメモリと違って,マイクロ秒単位になります.

さらに,ストレージに格納されているファイルは基本的にばらばらですので,どこに何が入っているかはシーケンシャルに検索されることになります.

なので,アクセス時間も遅いことに加えて,その遅いアクセスが大量に発生するため余計に時間がかかります.

例えば,普通のプログラミング言語(python, Cなど)で超巨大ファイルを扱う場合には,膨大な時間がかかります.

かつ,複数の超巨大ファイルが存在し,計算負荷のかかる演算の場合,すぐに詰みです.

ここで,「一気に扱う」というのが大きなポイントです.

平均値を求める作業などは,「すべてのデータ」が必要になります.

しかし,例えば画像処理などはどうでしょう? 超巨大な映像データを扱う必要があるとします.

このとき1秒間に必要なデータはそれほど大きくないのではないでしょうか.

ようするに,ストレージに格納されている超巨大な映像データから,メインメモリに1秒間に必要なデータを移動させれば,

私たちは1秒間は満足して映像を眺めることができます.

この繰り返しでなんとかなります.

ようするに,画像処理の場合はデータを細切れに扱う(メインメモリに移動させる)ことができます.

これは機械学習などでモデルを作る場合などにも当てはまります.

必ずしも一気にデータを扱う必要はありません.

ですが,平均値を求める場合はどうでしょうか.

さすがにそんなに待てません・・・ようするにデータを一気に扱いたいです.

物理的にストレージから読み出す速度は速くなりませんから,アクセス回数を減らすことがカギになります.

そこで必要になってくるのがデータベース技術です.

データベースは,ストレージに格納されているデータを整理整頓しておいてくれるため,アクセス回数を減らすことができます.

「メモリとストレージの間のやりとりをうまくやってくれる達人」という感じです.

この達人をうまく使いこなさないといけないので,それなりにスキルがいります.

リレーショナルデータベースのOracleやPostgreSQL, Hadoop, Sparkなどがあります.

それぞれ必要なスキルは異なりますが,基本的にはSQLという言語を覚えなければなりません.

データベースを構築する意味というのは結構勘違いされがちで,「複数人で競合しないようにアクセスできる」,

「データ登録時や検索時に不整合が生じないようにする」ためだと思っているかたもいると思います.

ですが一番大事な役割は,「ストレージへのアクセス回数を最小限にとどめる」です.

そして,最後はみなさんご存知のとおり,ビッグエータを扱うとかなり実行時間がかかります.

データベースを使った場合でも1個のテーブルの容量が100GBを超えるとそれなりに待たされることが多いです.

目次

ビッグデータで最も困難な解析はなにか?

以上述べてきたように,画像処理や,場合によって機械学習なども,逐次的にデータをストーレジから取り出せば事足りることが多いためデータベース技術を用いない場合もそれほど困りません.

機械学習のモデルを構築し,その後にデータを判別していく段階においても,それほどすぐに結果を得る必要がないため,あまり問題ではありません.

現状,もっともビッグデータ分析の被害をうけるのが統計解析を専門とするデータサイエンティストです.

例えば,平均,分散,回帰分析,多変量解析などを行いたい場合でも,メモリに乗りきらないデータの場合は,結果が返ってくるまでにとてつもなく時間がかかります.

この種のデータ解析で結果がすぐに帰ってこないというのは,かなりのストレスです.

また,解析単位ごとのデータセットを作成する際にも膨大な時間がかかります.

例えばどういうことかといいますと,こちらの先生のように統計解析ソフトのRを用いて解析しようとすると下記の先生のように

https://www.mhlw.go.jp/stf/shingi/2r9852000002ss9z-att/2r9852000002sse8.pdf

とてつもないスペックのマシンが必要になるといった感じです.

それと同時に,データハンドリングで必要になる工夫やスキルも多く必要になります.

このように,実はデータ量が増加するにつれて一番被害をうけるのは,

実は統計解析の専門家であるという事実です.

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某メーカーで数年間エンジニアとして勤務していました.研究,開発,品質管理とたらい回しの刑を満了し,現在はパッケージソフトウェア開発者として個人で活動しています.

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次