序章

Apache Accumuloは、GoogleのBigTableに基づくオープンソースの分散型NoSQLデータベースです。 これは、非常に大きなデータセット(ビッグデータと呼ばれることが多い)に対してCRUD(Create Read Update Delete)操作を効率的に実行するために使用されます。 プロジェクトがセルレベルのアクセス制御の形できめ細かいセキュリティを必要とする場合、Accumuloは他の同様の分散データベース(HBaseやCouchDBなど)よりも優先されます。

Accumuloは、他のApacheソフトウェアの上に構築されています。 Accumuloは、データをキーと値のペアの形式で表し、そのデータをファイルとしてHDFS(ApacheのHadoop分散ファイルシステム)に保存します。 また、Apache ZooKeeperを使用して、すべてのプロセス間で設定を同期します。

このチュートリアルでは、次の方法を学習します。

  • Apache HDFSとZooKeeperのインストールと構成:Accumuloを起動する前に、これらのシステムをアクティブにする必要があります
  • Accumuloのスタンドアロンインスタンスをインストールして構成します

前提条件

次のものが必要になります。

ステップ1—JDK7をインストールして構成する

Accumulo、HDFS、およびZooKeeperはすべてJavaで記述されており、実行するにはJVM(Java仮想マシン)が必要です。 それでは、JDKをインストールすることから始めましょう。

パッケージリストのインデックスを更新します。

sudo apt-get update

を使用してOpenJDK7をインストールします apt-get.

sudo apt-get install openjdk-7-jdk

使用する nano シェル環境ファイルを編集するには、 .bashrc.

nano ~/.bashrc

追加 JAVA_HOME ファイルの最後にある環境変数として。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

:の値 JAVA_HOME サーバーのアーキテクチャによって異なる場合があります。 たとえば、64ビットサーバーでは、値は次のようになります。 /usr/lib/jvm/java-7-openjdk-amd64. 内容を一覧表示すると、正確なパスを確認できます。 /usr/lib/jvm/ ディレクトリ。 パスがここに表示されているものと異なる場合は、ここや他の場所で適切な変更を加えてください。

ファイルを保存して終了します nano. 次のように入力して、現在のセッションの環境変数を更新します。

. ~/.bashrc

JVMを編集します java.security を使用した構成ファイル nano.

sudo nano $JAVA_HOME/jre/lib/security/java.security

パラメータを検索します securerandom.source 次のように行を変更します。

securerandom.source=file:/dev/./urandom

ファイルを保存して終了します nano. この変更は、JVMの起動時間を短縮するために必要です。 この変更を行わないと、ほとんどの仮想サーバーで非常に長い起動時間が発生する可能性があります。

ステップ2—SSHをインストールします

Hadoopは、デーモンを管理するためにSSHとRsyncを必要とします。 次のコマンドを使用してそれらをインストールします。

sudo apt-get install ssh rsync

ステップ3—パスワードなしのSSH接続を有効にする

Hadoopは、パスワードの入力を求められることなく、SSH経由でサーバーに接続できる必要があります。

を使用してRSAキーを生成します ssh-keygen.

ssh-keygen -P ''

プロンプトが表示されたらENTERを押して、デフォルト値を選択します。

生成されたキーをに追加します authorized_keys ファイル。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

その価値 localhost0.0.0.0 既知のホストのリストに追加する必要があります。 これを行う最も簡単な方法は、 ssh 指図。

追加しましょう localhost 最初。

ssh localhost

次のようなメッセージが表示されます。

The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is bf:01:63:5b:91:aa:35:db:ee:f4:7e:2d:36:e7:de:42.
Are you sure you want to continue connecting (yes/no)?

入力します yes を押して ENTER.

ログインが完了したら、次のように入力して子SSHセッションを終了します。

exit

追加しましょう 0.0.0.0 今。

ssh 0.0.0.0

入力します yes を押して ENTER プロンプトが表示されたら。

もう一度、次のように入力して、子SSHセッションを終了します。

exit

これでSSHのセットアップが完了しました。

ステップ4—ダウンロードディレクトリを作成する

このチュートリアル用にいくつかのファイルをダウンロードします。 本当に必要というわけではありませんが、すべてのダウンロードを別のディレクトリに保存することをお勧めします。

mkdir -p ~/Downloads

ディレクトリを入力します。

cd ~/Downloads

ステップ5—ApacheHadoopをダウンロードする

執筆時点で、Hadoopの最新の安定バージョンは2.6.0です。 を使用してダウンロード wget.

wget "http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.6.0.tar.gz"

ステップ6—ApacheZooKeeperをダウンロードする

ZooKeeperの最新の安定バージョンは3.4.6です。 を使用してダウンロード wget.

wget "http://www.eu.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz"

ステップ7—ApacheAccumuloをダウンロードする

Accumuloの最新の安定バージョンは1.6.1です。 を使用してダウンロード wget.

wget "http://www.eu.apache.org/dist/accumulo/1.6.1/accumulo-1.6.1-bin.tar.gz"

ステップ8—インストールディレクトリを作成する

Accumulo関連のすべてのインストールを保存するディレクトリを作成します。

mkdir -p ~/Installs

ディレクトリを入力します。

cd ~/Installs

ステップ9—Hadoopをインストールして構成する

使用 tar の内容を抽出するコマンド hadoop-2.6.0-src.tar.gz.

tar -xvzf ~/Downloads/hadoop-2.6.0.tar.gz

注:このソフトウェアのいずれかの異なるバージョンをインストールした場合は、ファイル名に適切なバージョンを使用してください。

使用する nano 開く hadoop-env.sh.

nano ~/Installs/hadoop-2.6.0/etc/hadoop/hadoop-env.sh

で始まる行を探します export JAVA_HOME 次のように変更します。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

この値が設定した値と同じであることを確認してください .bashrc.

デフォルトでは、Hadoopは多くのデバッグログを生成します。 この動作を停止するには、で始まる行を探します export HADOOP_OPTS 次のように変更します。

export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"

保存して終了。

使用する nano 開く core-site.xml.

nano ~/Installs/hadoop-2.6.0/etc/hadoop/core-site.xml

追加する <property> 名前の付いたブロック fs.defaultFS. その値は、namenodeのホスト名とポートを指している必要があります(この場合は、 localhost およびデフォルトのポート 9000). コメントを無視して、次のようにファイルを編集します。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

保存して終了。

使用する nano 開く hdfs-site.xml.

nano ~/Installs/hadoop-2.6.0/etc/hadoop/hdfs-site.xml

このファイルに次のプロパティを追加する必要があります。

  • dfs.replication:この数値は、ブロックがHadoopによって複製される回数を指定します。 デフォルトでは、Hadoopは 3 各ブロックのレプリカ。 このチュートリアルでは、値を使用します 1、クラスターを作成していないため。

  • dfs.name.dir:これは、namenodeが名前テーブルを格納できるファイルシステム内の場所を指します。 Hadoopはを使用するため、これを変更する必要があります /tmp デフォルトでは。 使用しましょう hdfs_storage/name 名前テーブルを保存します。

  • dfs.data.dir:これは、データノードがブロックを格納する必要があるファイルシステム内の場所を指します。 Hadoopはを使用するため、これを変更する必要があります /tmp デフォルトでは。 使用しましょう hdfs_storage/data データブロックを保存します。

コメントを無視すると、これらのプロパティを追加すると、ファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>hdfs_storage/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>hdfs_storage/data</value>
    </property>
</configuration>

使用する nano 名前の付いた新しいファイルを作成するには mapred-site.xml.

nano ~/Installs/hadoop-2.6.0/etc/hadoop/mapred-site.xml

名前の付いたプロパティを追加します mapred.job.tracker このファイルに。 このプロパティには、MapReduceジョブトラッカーが実行されるホスト名とポート番号が含まれます。 セットアップには、 localhost およびデフォルトのポート 9001.

次のコンテンツをファイルに追加します。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>localhost:9001</value>
     </property>
</configuration>

Hadoopのベースディレクトリを入力します(Hadoopが作成するため、これは重要です。 hdfs_storage 現在のディレクトリのディレクトリ)。

cd ~/Installs/hadoop-2.6.0/

NameNodeは、次のように入力して初期化できるようになりました。

~/Installs/hadoop-2.6.0/bin/hdfs namenode -format

かなりの出力が表示されるはずです。

次に、次のように入力してNameNodeを起動します。

~/Installs/hadoop-2.6.0/sbin/start-dfs.sh

開始するまで1〜2分待ちます。 開始すると、ブラウザを使用してアクセスできます http://<your-ip>:50070/ NameNodeのWebインターフェイスを参照します。

トラブルシューティング

Webインターフェイスにアクセスできない場合は、次のコマンドを使用してNameNodeがアクティブかどうかを確認します。

jps

出力には、次の3つのプロセスと Jps 処理する:

  • DataNode
  • NameNode
  • SecondaryNameNode

あなたがそれを見たら NameNode 出力にが存在しない場合は、次の手順を実行します。 それらがブロック内で実行されない場合は、別々に実行する必要がある場合があります。 コメントはインラインで含まれています。

cd ~/Installs/hadoop-2.6.0/
~/Installs/hadoop-2.6.0/sbin/stop-dfs.sh # Stop Hadoop's nodes
rm -rf hdfs_storage # Delete the namenode data
rm -rf /tmp/hadoop-* # Delete the temporary directories
~/Installs/hadoop-2.6.0/bin/hdfs namenode -format # Reformat the namenode

を使用してHadoopを再起動します start-dfs.sh:

~/Installs/hadoop-2.6.0/sbin/start-dfs.sh

これで、Webインターフェイスにアクセスできるようになります。

ステップ10—ZooKeeperをインストールして構成する

入力します Installs ディレクトリ。

cd ~/Installs

使用する tar 抽出する zookeeper-3.4.6.tar.gz.

tar -xvzf ~/Downloads/zookeeper-3.4.6.tar.gz

サンプルファイルをコピーします zoo_sample.cfgzoo.cfg.

cp ~/Installs/zookeeper-3.4.6/conf/zoo_sample.cfg ~/Installs/zookeeper-3.4.6/conf/zoo.cfg

これで、ZooKeeperの構成が完了しました。 次のように入力して、ZooKeeperを起動します。

~/Installs/zookeeper-3.4.6/bin/zkServer.sh start

次のような出力が表示されます。

JMX enabled by default
Using config: ~/Installs/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

ステップ11—Accumuloをインストールして構成する

すべての依存関係が満たされたら、Accumulo自体のインストールに取り掛かります。

入力します Installs ディレクトリ。

cd ~/Installs

エキス accumulo-1.6.1-bin.tar.gz を使用して tar:

tar -xvzf ~/Downloads/accumulo-1.6.1-bin.tar.gz

Accumuloには、512 MB、1 GB、2 GB、および3GBのさまざまなメモリサイズのサーバーのサンプル構成が付属しています。 このチュートリアルでは、512MBの構成を使用します。 サーバーのメモリが多い場合は、別の構成を選択できます。

512MBの構成ファイルをにコピーします conf ディレクトリ。

cp ~/Installs/accumulo-1.6.1/conf/examples/512MB/standalone/* ~/Installs/accumulo-1.6.1/conf/

使用する nano を使用してシェル環境を再度編集するには .bashrc ファイル。

nano ~/.bashrc

このファイルに次の環境変数を追加します。

  • HADOOP_HOME:Hadoopインストールへのパス
  • ZOOKEEPER_HOME:ZooKeeperインストールへのパス

次の行をファイルに追加します。

export HADOOP_HOME=~/Installs/hadoop-2.6.0/
export ZOOKEEPER_HOME=~/Installs/zookeeper-3.4.6/

保存して終了。

追加した変数が追加されるように環境を更新します .bashrc 現在のセッションで利用できます。

. ~/.bashrc

使用する nano 編集する accumulo-env.sh.

nano ~/Installs/accumulo-1.6.1/conf/accumulo-env.sh

デフォルトでは、AccumuloのHTTPモニターはローカルネットワークインターフェースにのみバインドします。 インターネット経由でアクセスできるようにするには、次の値を設定する必要があります。 ACCUMULO_MONITOR_BIND_ALLtrue.

で始まる行を見つける export ACCUMULO_MONITOR_BIND_ALL コメントを外します。 次のようになります。

export ACCUMULO_MONITOR_BIND_ALL="true"

保存して終了。

使用する nano 編集する accumulo-site.xml.

nano ~/Installs/accumulo-1.6.1/conf/accumulo-site.xml

Accumuloのワーカープロセスは、秘密鍵を使用して相互に通信します。 これは、安全な文字列に変更する必要があります。 プロパティを検索する instance.secret その値を変更します。 この文字列を使用します: PASS1234. プロパティのXMLは次のようになります。

<property>
    <name>instance.secret</name>
    <value>PASS1234</value>
    <description>A secret unique to a given instance that all servers must know in order to communicate with one another.
      Change it before initialization. To
      change it later use ./bin/accumulo org.apache.accumulo.server.util.ChangeSecret --old [oldpasswd] --new [newpasswd],
      and then update this file.
    </description>
</property>

次に、という名前の新しいプロパティを追加します instance.volumes. このプロパティの値は、AccumuloがHDFSのどこにデータを保存するかを指定します。 ディレクトリにデータを保存しましょう /accumulo.

<property>
    <name>instance.volumes</name>
    <value>hdfs://localhost:9000/accumulo</value>
</property>

プロパティを検索 trace.token.property.password、およびその値を安全なものに設定します。 次のステップで必要になるため、この値を覚えておいてください。 これをに設定します mypassw.

  <property>
    <name>trace.token.property.password</name>
    <value>mypassw</value>
  </property>

保存して終了。

Accumuloを初期化します。

~/Installs/accumulo-1.6.1/bin/accumulo init

インスタンス名を入力するように求められます。 任意の名前を使用してください。 私は選ぶ DIGITAL_OCEAN.

次に、パスワードの入力を求められます。 プロパティに使用したものと同じパスワードを入力します trace.token.property.password.

コマンドが完了すると、Accumuloを起動できます。

~/Installs/accumulo-1.6.1/bin/start-all.sh

特定のシステムパラメータに高い値を推奨する警告がいくつか表示される場合があります。 このチュートリアルでは非常に小さなインスタンスを作成しているため、これらの警告は無視してかまいません。

起動が完了すると、ブラウザを使用してAccumuloのWebインターフェイスにアクセスできます。 http://<your-server-ip>:50095.

結論

このチュートリアルでは、ApacheAccumuloとそれが依存する他のすべてのコンポーネントをセットアップする方法を学びました。 今日、単一の小さなサーバーで実行できる疑似分散モードのHDFSを使用して、非常に単純なセットアップを作成しました。 本番シナリオで最適なパフォーマンスを得るには、HDFSを完全分散モードで実行する必要があります。

本番シナリオでは、これらのプロセスを少なくとも8GBのRAMと4つ以上のプロセッサコアを備えたサーバーにデプロイして、各プロセスが2GBを超えるメモリと個別のコアを使用できるようにすることも強くお勧めします。 または、コンポーネントを別々のサーバーに個別にデプロイすることもできます。

詳細については、ApacheAccumuloのユーザーマニュアルを参照してください。