CentOS7 に Hadoop と Mahout を入れて機械学習を試してみる - 株式会社CoLabMix

CentOS7 に Hadoop と Mahout を入れて機械学習を試してみる

Mahout を使って機械学習を行うための環境を構築します。

環境はCentOS7で行い、MahoutではHDFSが必要なため、同一環境でHadoopのインストールを行います。

事前準備

まず、必要なデベロッパーツールなどをインストールします。

 

Apache Maven のインストール

CentOS への Mahout のインストールでは、Javaのパッケージ管理の Apache Maven を入れてのインストールが楽なのでこちらをインストールします。

 

Apache Mahout のインストール

次に Apache Mahout のインストールを実施します。

root以外のユーザーでインストール可能なので、今回は「mahout」というユーザーを作成しインストールします。

 

まず、このユーザーでsshでパスワードなしのキーログインできる設定を行っておきます。

こちらは後にHDFSの環境を作るために必要な設定ですが、事前に実施しておきます。

 

また、環境変数の設定を実施します。

こちらも後にインストールされるパッケージのパスも設定しておきます。

特に Java や Hadoop などはインストールするバージョンなど変わることが多いと思うので、必要でしたら変更してください。

 

そして、 Mahout のソースをgitから取得しインストールを行います。

こちらで Mahout はインストールできました。

 

Apache Hadoop のインストール

次に Apache Hadoop のインストールを行います。

インストールは以下を参考にしています。

★ Apache Hadoopのインストール手順

Mahout では HDFS が必要なため、今回は試験で単独環境で動く疑似分散モードでの構築を行います。

CentOS7 で Apache Hadoop の疑似分散モードを使ってみる

 

次に設定ファイルの変更を行います。

<configuration></configuration>タグを以下に書き換えます。

 

また、クラスタ関連の設定も行います。

「dfs.replication」が「1」となっているので、クラスタ一台で動かす設定となっています。

 

namenodeを初期化します。

 

また、環境設定として以下の変更を行います。

 

namenodeの起動を行います。

クラスタでは複数の台数に一括でコマンドを行うので、sshでの接続を行なって起動をします。

 

最後に無事、HDFSが動いているのを確認するためファイルのリストを確認します。

 

こちらで、Hadoop のインストールなどは完了です。

 

Mahout のサンプルプログラムの起動

Mahout ではサンプルプログラムが複数入っているので、wikiのクラスタリングを行うプログラムを試してみます。

 

Wikiのデータを10カ国で分類した結果になります。

2331の統計データがあり、2032が正解で299が失敗という結果になりました。

 

映画データのレコメンドの実施

次に以下のような試験を実施してみます。

https://docs.microsoft.com/ja-jp/azure/hdinsight/hdinsight-mahout

 

u.dataの方は最初がユーザーIDで次が映画のID、そして評価とタイムスタンプが続きます。

こちらの10万件データを利用しレコメンドデータの作成を行います。

 

ユーザーごとにおすすめの映画の評価付けを非常に簡単に行うことができました。

一連の流れでしたが、色々なことが試せそうです。

 

このブログは株式会社CoLabMixによる技術ブログです。

GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。

Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。

開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。

お問い合わせやご依頼・ご相談など

     

    関連記事

    1. 第24回Elasticsearch勉強会「入門編」 に参加してみた

    2. 公開鍵と秘密鍵を使ったサーバへのSSHログインの設定方法について

    3. Elasticsearchでエイリアスの作成

    4. CentOS7系でmongodb4.0のインストール

    5. terraformでRDS PROXYの設定

    6. scrapy-redisを使って、redisを使ったクローリングを試…