今回は、Apache hadoopファミリーのHDFSを試してみた
ちなみに、HDFSとは、"Hadoop Distributed File System"とのことだそうです。
⬛︎ HDFS環境構築
- JDK環境をインストールし、JAVA_HOME環境変数にセットする
$ sudo apt-get install default-jdk
$ sudo update-alternatives --list java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
$ cd $HOME
$ vi .profile
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$HOME/hadoop-2.7.2/bin:$HOME/hadoop-2.7.2/sbin:$PATH
$ source .profile
- ssh環境をセットアップする
$ sudo apt-get install ssh
$ sudo apt-get install rsync
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
ssh localhostで、パスワード問い合わせが無いことを確認する
$ ssh localhost
$ exit
- Hadoopをダウンロードする
$ wget http://www.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
$ tar xfz hadoop-2.7.2.tar.gz
$ cd hadoop-2.7.2/etc/hadoop/
- hadoop設定ファイルを修正する
まず、core-site.xmlを編集する
$ vi core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
つづいて、hdfs-site.xmlを編集する
$ vi hdfs-site.xml
<?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>
</configuration>
そして、hadoop-env.shも編集しておく
$ vi hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
- NameNodeを初期化する
$ hdfs namenode -format
16/03/04 03:55:40 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = HDFS/127.0.1.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.7.2
... (snip)
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at HDFS/127.0.1.1
************************************************************/
- hadoopを起動する
$ start-dfs.sh
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/tsubo/hadoop-2.7.2/logs/hadoop-tsubo-namenode-HDFS.out
localhost: starting datanode, logging to /home/tsubo/hadoop-2.7.2/logs/hadoop-tsubo-datanode-HDFS.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/tsubo/hadoop-2.7.2/logs/hadoop-tsubo-secondarynamenode-HDFS.out
- hadoopプロセス起動を確認する
$ jps
12767 Jps
12656 SecondaryNameNode
12462 DataNode
12302 NameNode
- hadoop動作状態を確認する
Webブラウザから、http://localhost:50070/ にアクセスして、hadoop動作状態を確認する
⬛︎ HDFSを使ってみる
- fooディレクトリを作成してみる
$ hdfs dfs -ls /
$ hdfs dfs -mkdir /foo
$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x - tsubo supergroup 0 2016-03-04 04:11 /foo
- UNIXローカル上のテキストファイルを、HDFS上に保管してみる
$ cat /home/tsubo/test.txt
test data
$ hdfs dfs -put /home/tsubo/test.txt /foo
@HDFS:~$ hdfs dfs -ls /foo
Found 1 items
-rw-r--r-- 1 tsubo supergroup 10 2016-03-04 04:14 /foo/test.txt
- HDFS上のtest.txtファイル内容を確認してみる
$ hdfs dfs -cat /foo/test.txt
test data
- Webブラウザの管理画面からも確認してみる
- test.txtファイルを削除する
$ hdfs dfs -rm /foo/test.txt
16/03/04 04:20:54 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /foo/test.txt
- fooディレクトリを削除する
$ hdfs dfs -rmdir /foo
$ hdfs dfs -ls /
- 最後に、Hadoopを停止しておく
$ stop-dfs.sh
Stopping namenodes on [localhost]
localhost: stopping namenode
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode
以上