0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

hadoopを初めて触ってみただけの記録

Last updated at Posted at 2022-09-11

hadoopの授業なう。いつか使ってみたいのでとりあえず実際に触ってみた。
hadoopというコマンドがあることも知らなかったし、hdfs というコマンドがあることも知らなかった

役割分担が微妙に感じた。hadoopで mkdir して、hdfsでput/delする。うーん。ディレクトリはhadoop側の管理ってことなんだろうか。directoryで分散させるわけではないだろうけど・・namespaceがなにかもまだわかってないしな
どうやら hadoop fs と hdfs dfs は同じことができるらしい。hadoopはHDFS以外のFSも後ろにもてて、S3とかlocalとかに保存するwrapper. wrapperなので、hadoop fs で操作できたりするらしい

環境作るのは、ここをそのままやっただけ

setup

たった3行で起動した

git clone git@github.com:big-data-europe/docker-hadoop.git

cd docker-hadoop

docker-compose up -d

# docker ps --format "{{.ID}}       {{.Names}}                      {{.Image}}                      {{.Ports}}"
fad77bdefbd5    resourcemanager                 bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8                  8088/tcp
d999cc5952b4    datanode                        bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8                 9864/tcp
62cdd1420e1c    historyserver                   bde2020/hadoop-historyserver:2.0.0-hadoop3.2.1-java8                    8188/tcp
c17fd2dc5308    nodemanager                     bde2020/hadoop-nodemanager:2.0.0-hadoop3.2.1-java8                      8042/tcp
04afb5007d6a    namenode                        bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8                 0.0.0.0:9000->9000/tcp, 0.0.0.0:9870->9870/tcp

UI

http://localhost:9870/ にアクセスすると、dashboard的なのが見れた。 file browserもあったけど使い方がわからなかった。

これは namenode が提供している UI のようだ。

image.png

put files

docker exec -it namenode bash

mkdir input

echo "Hello World" >input/f1.txt

echo "Hello Docker" >input/f2.txt

hadoop fs -mkdir -p input

hdfs dfs -put ./input/* input

hdfs dfs -ls input

-rw-r--r--   3 root supergroup         12 2022-09-11 13:22 input/f1.txt
-rw-r--r--   3 root supergroup         13 2022-09-11 13:22 input/f2.txt

特徴的なのは root の左にある 3 という数字。これは dataのcopy数を表すらしい。僕は何もしてないのに、勝手に 3 copy されているらしい。datanodeは1つなので、その中に3つずつ作られているんだろう。素敵。

hadoopに計算させる

docker container ls

wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-mapreduce-examples/2.7.1/hadoop-mapreduce-examples-2.7.1-sources.jar

docker cp ../hadoop-mapreduce-examples-2.7.1-sources.jar cb0c13085cd3:hadoop-mapreduce-examples-2.7.1-sources.jar

root@namenode:/# hadoop jar hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount input output

root@namenode:/# hdfs dfs -cat output/part-r-00000
Docker	1
Hello	2
World	1

このjarの説明はここにあった

Javaがわからないので何もわからない

hadoopはmapper/reducer で処理するって前提があって、mapperでデータをクラスタから集めてきてreducerで重複除外したりする

contextってので受け渡ししてるぽい

感想

まあ、なんとなく Hiveとかなんとかとか、ecosystemと言われる周りのものが発展する気持ちはわかる感じの使い勝手だった。

localでしかやってないのに ls で3秒かかるし

root@04afb5007d6a:/# time hdfs dfs -ls input
Found 2 items
-rw-r--r--   3 root supergroup         12 2022-09-11 13:22 input/f1.txt
-rw-r--r--   3 root supergroup         13 2022-09-11 13:22 input/f2.txt

real	0m1.997s
user	0m2.747s
sys	0m0.360s

Javaとかのprogramから使うのが前提なのと、analytics用途なので、遅くてもいいって感じなのかな。

あと気になったのが最小data block sizeが64MBってどこかに書いてあったこと。例えばこの足して25bytesのファイル2つを取るとき、どんな通信してるんだべか。

まぁ、そのうち。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?