Ubuntu14.04にビッグデータ対応のApacheAccumuloNoSQLデータベースをインストールする方法
序章
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
その価値 localhost
と 0.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.cfg
に zoo.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_ALL
に true
.
で始まる行を見つける 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のユーザーマニュアルを参照してください。