1. HOME
  2. ブログ
  3. IT技術
  4. HDFS + Apache Spark をインストールし、Javaでテキスト検索アプリを実行してみた

HDFS + Apache Spark をインストールし、Javaでテキスト検索アプリを実行してみた

Apache Spark を HDFS 上で稼働させて、テキスト検索アプリを実行しよう

このビッグデータの時代、膨大なデータに対する高効率かつハイスピードのデータ分析エンジンが不可欠となっています。

そこで登場したのが、「Apache Spark」です。

「Apache Spark」のウェブサイトによると、Hadoop の MapReduce より、Spark の方が100倍も速いとのこと。

【Apache Spark】
https://spark.apache.org/

それでは、Spark とは、どのようなソフトウェアなのでしょうか

こちらの記事もオススメ!

Apache Spark とは?

Spark のウェブサイトでは、「Apache Spark™ is a unified analytics engine for large-scale data processing.」と定義されていました。

簡単に翻訳すると、「Spark とは、大規模のデータを処理するための統合的な分析エンジンのことです。

Sparkの成り立ち

Spark は、「SQL」と「Dataframes」、機械学習のための「MLib」、グラフデータ処理のための「GraphX」、及び「Spark Streaming」のライブラリから成り立っています。

統合的というのは、これらのライブラリを一つのアプリケーションで円滑に統合できることを意味しています。

大規模のデータを高速に処理するため、Spark は、多数のマシーンから成り立つクラスター上で並列分散処理を実行。

分析エンジンとして、Spark は独自の永続性記憶装置機能を持っていません。

とはいえ、Spark はHDFS(Hadoop Distributed File System)や「Apache Mesos」、「Apache HBase」など、様々な分散システム上で稼働することができます。

この記事では、HDFS 上で Spark を稼働させて、テキスト検索アプリケーションを実行してみます。

環境と必要なソフトウェア

ちなみに、この記事の環境や必要なソフトウェアは、以下の通りです。

  1. OS は、「Windows 10 Home 日本語版」です。
  2. Java は、「JDK 1.8」がインストール済みです。
  3. IDE は、「Intellij IDEA」を使っています。
  4. Hadoop は、「Apache Hadoop-2.7.7」を使用します。
  5. Spark は、「Apache Spark-2.4.5-bin-hadoop-2.7」を使用します。
  6. Windows OS のための Hadoop のパッチファイルが必要となります。

Apache Hadoop をインストールしよう

HDFS 上で Spark を稼働するためには、まず、Hadoop をインストールする必要があります。

HDFS(Hadoop Distributed File System)は、名前の通り「Apache Hadoop」の分散ファイルシステムです。

「Apache Hadoop」とは単純なプログラミングモデルを用いて、コンピューターのクラスター上で大規模なデータセットの分散処理を可能とするフレームワークのことです。

【Apache Hadoop】
https://hadoop.apache.org/

※Hadoop や HDFS の詳細について、またの機会があればまとめたいと思います!

Apache Hadoop のダウンロード

それでは、まず、「Apache Hadoop-2.7.7」を以下からダウンロードしましょう。

【archive.apache.org】
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/

「Apache Hadoop 2」スタンドアローンモードのインストール

次に、「Apache Hadoop 2」をスタンドアローンモードでインストールていきましょう。

インストールは、以下のステップで行っていきます。

ステップ1:「Hadoop-2.7.7.tar.gz」ファイルを解凍

初めに、ダウンロードした「Hadoop-2.7.7.tar.gz」ファイルを、「C:\hadoop-2.7.7」フォルダに解凍します。

ステップ2:「hadoop-env.cmd」ファイルを編集して JAVA_HOME を設定

次に、「C:\hadoop-2.7.7\etc\hadoop」フォルダにある「hadoop-env.cmd」ファイルを編集し、JAVA_HOME の設定を行います。

この記事の環境では、「JAVA_HOME=C:”\Program Files\Java\jdk1.8.0_241″」と設定しました。

ステップ3:「core-site.xml」ファイルを編集

「C:\hadoop-2.7.7\etc\hadoop」フォルダにある「core-site.xml」ファイルを、以下のように編集します。

ステップ4:「hdfs-site.xml」ファイルを編集

「C:\hadoop-2.7.7\etc\hadoop」フォルダにある「hdfs-site.xml」ファイルを編集し、レプリカの数と namenode、datanode ディレクトリの設定を行います。

ステップ5:「mapred-site.xml.template」ファイルをコピーして編集

「C:\hadoop-2.7.7\etc\hadoop」フォルダにある「mapred-site.xml.template」ファイルを、「mapred-site.xml」ファイルにコピーします。

つまり、「mapred-site.xml.template」ファイルを同じフォルダにコピーし、そのコピーを「mapred-site.xml」と名付けます

そして、「mapred-site.xml」ファイルを次の通りに編集します。

ステップ6:「yarn-site.xml」ファイルを編集

「C:\hadoop-2.77\etc\hadoop」フォルダにある「yarn-site.xml」ファイルを、以下のように編集します。

ステップ7:Windows 用の Hadoop パッチファイルに置き換える

Windows の環境上で Hadoop を稼働するため、Windows 用の Hadoop パッチファイルが必要となります。

デフォルトでは、このパッチファイルは、Hadoop のディストリビューションに入っていません。

Hadoop のパッチファイルは、以下のウェブサイトからダウンロードできます。

【GitHub】
https://github.com/wmwijaya/hadoop2-standalone-windows7-windows10/tree/master/bin

ここで、「C:\hadoop-2.7.7\bin」フォルダにある全てのファイルを削除し、上記のウェブサイトにある全てのファイルで置き換えます

ステップ8:環境変数に HADOOP_HOME を作成して Hadoop のパスを設定

Windows 10 のシステム環境変数に、HADOOP_HOME という変数を新規作成し、その値に「C:\hadoop-2.7.7」を設定。

システム環境変数の Path 変数を編集し、「C:\hadoop-2.7.7\bin」と「C:\hadoop-2.7.7\sbin」を新規の値として追加します。

ステップ9:HDFS をフォーマット

「Windows PowerShell」を管理者として実行し、HDFS をフォーマットする hdfs namenode -format コマンドを実行。

フォーマットが成功すると、以下のような画面が表示されます。

ステップ10:HDFS を起動

Hadoop の Namenode、Datanode、Resource Manager、Nodemanager を起動するため、管理者として実行した「Windows PowerShell」で start-dfs.cmd と  start-yarn.cmd コマンドを実行。

このとき、以下の4つの新しいコマンドプロンプトの画面が起動されます。

また、この4つのプロセス(Namenode、Datanode、Resource Manager、NodeManager)が動いているかどうかは、以下のように、 jps コマンドで確認できます。

以上で、Hadoop のスタンドアローンモードのインストールは完了です。

Hadoop の Resource Manager や Namenode の動作状況は、ウェブブラウザで確認できます

Resource Manager の URL:http://localhost:8088
Namenode の URL:http://localhost:50070

Resource Manager の動作状況

Namenode の動作状況

Apache Spark のセットアップ

次に、Apache Spark のセットアップを行っていきましょう。

Apache Spark のセットアップは、Hadoop のインストールと比べると簡単です。

Apache Spark のダウンロード

まず、「Apache Spark-2.4.5-bin-hadoop-2.7」を以下のウェブサイトからダウンロードしてください。

【Apache Spark】
https://spark.apache.org/downloads.html

Apache Spark のインストール

以下のようなステップで、Apache Spark をインストールしていきます。

ステップ1:「Apache Spark-2.4.5-bin-hadoop-2.7.tgz」を解凍

ダウンロードした「Apache Spark-2.4.5-bin-hadoop-2.7.tgz」ファイルを「C:\spark-2.4.5-bin-hadoop2.7」フォルダーに解凍します。

ステップ2:「winutils.exe」ファイルをコピー

Hadoop のホームディレクトリ(C:\hadoop-2.7.7)の「C:\hadoop-2.7.7\bin」ディレクトリから、「winutils.exe」ファイルを「C:\spark-2.4.5-bin-hadoop2.7\bin」へコピーします。

ステップ3:環境変数に SPARK_HOME を作成して Spark のパスを設定

Windows 10 のシステム環境変数に SPARK_HOME という変数を新規作成し、その値に「C:\spark-2.4.5-bin-hadoop2.7」と設定します。

そして、システム環境変数の Path 変数を編集し、「C:\spark-2.4.5-bin-hadoop2.7\bin」を新規の値として追加します。

ステップ4:Sparkを起動

管理者として実行した「Windows PowerShell」で、 spark-shell.cmd を実行し、「Spark Shell」を起動。

「Spark Shell」の起動が成功すると、「Windows PowerShell」で以下のような画面が表示されます。

これで、Apache Spark のセットアップは、完了です。

Spark テキスト検索アプリケーションを Java で作成・実行

HDFS と Spark の準備が完了しましたので、いよいよ、Spark のテキスト検索アプリケーションの作成に移ります。

まず、検索対象となるテキストファイルを用意しましょう。

ここでは、「sakura.txt」、「ninja.txt」、「osake.txt」という3つのテキストファイルを作成しました。

これらのテキストファイルの内容は、ファイル名の通り、英語の Wikipedia からコピーしたテキストです。

HDFS へテキストファイルをアップロード

テキストファイルの準備ができたら、HDFS にアップロードしましょう。

その前に、管理者として実行した「Windows PowerShell」で以下のコマンドを実行し、HDFS でそれらのテキストファイルを格納するためのディレクトリを作成します。

HDFS へアップロード

次は、用意したテキストファイルを1個づつ HDFS へアップロードします。

コマンドで確認

アップロード完了したら、 hdfs dfs -ls /tmp/input コマンドで確認しましょう。

ちなみに、今回の実行環境では、以下の画像のようになります。

テキスト検索アプリケーションの作成・実行

この記事では、「Intellij IDEA」を使用していますので、「Intellij IDEA」の方法で Spark テキスト検索アプリケーションを作成します。

次のようなステップでやっていきます。

ステップ1:テキスト検索アプリのプロジェクトを作成

「Intellij IDEA」を管理者として実行し、「Maven Project」を新規作成します。

このプロジェクトに「SparkTextSearch」というプロジェクト名を付けます。

そして、「C:\spark-2.4.5-bin-hadoop2.7\jars」フォルダを、プロジェクトのモジュールのディペンデンシーに追加します。

ステップ2:テキスト検索アプリを作成

プロジェクトの「src > main > java」に「TextSearch.java」という新しい Java クラスを作成します。

そのソースコードは、次のようになります。

完成した「SparkTextSearch」のプロジェクト構成は、以下のようになります。

ステップ3:テキスト検索アプリを実行

「TextSearch.java」を実行し、実行結果を確認しましょう。

実行が成功すると、以下の画像に示されるような結果が得られます。

ご覧の通り、テキストのクエリを含む文は、行ごとに出力されます。

さいごに

すこし長くなってしまいましたが、いかがでしたでしょうか?

Windows 環境において、「Apache Spark + HDFS」をインストールし、Java でテキスト検索アプリケーションを作成し、実行してみました。

今回の記事を参考に、検索アプリなどを作ってみてはいかがでしょうか!

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い、「好きを仕事にするエンジニア集団」です。
JavaやApacheSparkでのシステム開発依頼・お見積もりはこちらまでお願いします。
また、Javaを扱えるエンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界はお前の手の中に・・・ /

モバイルエンジニア

\ サービスの守り神! /

インフラエンジニア