DockerでHadoopを動かす(1)
DockerでHadoopを動かしてみる。
基本は以下のサイトどおり。
https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SingleCluster.html
1.Hadoopインストール
wget http://apache.claz.org/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz tar xvzf hadoop-2.7.2.tar.gz mv hadoop-2.7.2 /usr/local/lib/hadoop
2.サンプル実行
/usr/local/lib/hadoop/bin/hadoop jar /usr/local/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar pi 10 2000
3.HDFSにファイルを入れてみる。
# cd /usr/local/lib/hadoop # bin/hdfs namenode -format # sbin/start-dfs.sh
sshが入っていないのでopenssh-clientsとopenssh-serverをyumで入れる。
yum install -y openssh-clients yum install -y openssh-server
dockerコンテナはいったんhadoopという名前をつけてcommitしておく。
commitしたイメージを再度コンテナとして起動するが、
systemctでsshdを起動しようとすると権限の問題で怒られるので、
以下の起動の仕方で起動する。
# docker run --privileged -d hadoop /sbin/init # docker exec -ti container_id bash
しかしここでJAVA_HOMEが設定されてないと怒られる。
/root/.bash_profileや/etc/profileにexportを記述しても解決しないので、
以下のファイルのexport JAVA_HOME=…を上書きした。
# vim etc/hadoop/hadoop-env.sh
# bin/hdfs dfs -mkdir /user # bin/hdfs dfs -put etc/hadoop/ /user # bin/hdfs dfs -ls /user drwxr-xr-x - root root 4096 2016-07-27 03:22 /user/hadoop # bin/hdfs dfs -ls /user/hadoop rw-r--r-- 1 root root 4436 2016-07-27 03:22 /user/hadoop/capacity-scheduler.xml -rw-r--r-- 1 root root 1335 2016-07-27 03:22 /user/hadoop/configuration.xsl -rw-r--r-- 1 root root 318 2016-07-27 03:22 /user/hadoop/container-executor.cfg -rw-r--r-- 1 root root 774 2016-07-27 03:22 /user/hadoop/core-site.xml -rw-r--r-- 1 root root 3670 2016-07-27 03:22 /user/hadoop/hadoop-env.cmd -rw-r--r-- 1 root root 4266 2016-07-27 03:22 /user/hadoop/hadoop-env.sh -rw-r--r-- 1 root root 2490 2016-07-27 03:22 /user/hadoop/hadoop-metrics.properties -rw-r--r-- 1 root root 2598 2016-07-27 03:22 /user/hadoop/hadoop-metrics2.properties -rw-r--r-- 1 root root 9683 2016-07-27 03:22 /user/hadoop/hadoop-policy.xml …(省略)
ということで、HDFSまで動かすことができました。