dockerで機械学習(93) with Hadoop(1)「Deep Learning with Hadoop」By Dipayan Dev

# 1.すぐに利用したい方へ(as soon as)

「Deep Learning with Hadoop」By Dipayan Dev



http://shop.oreilly.com/product/9781787124769.do


## docker
dockerを導入し、Windows, Macではdockerを起動しておいてください。
Windowsでは、BiosでIntel Virtualizationをenableにしないとdockerが起動しない場合があります。
また、セキュリティの警告などが出ることがあります。


## docker pull and run

```
$ docker pull kaizenjapan/anaconda-hadoop

$ docker run -it -p 8888:8888 kaizenjapan/anaconda-hadoop /bin/bash
```

以下のshell sessionでは
(base) root@f19e2f06eabb:/#は入力促進記号(comman prompt)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。
それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。
それぞれの章のフォルダに移動します。

dockerの中と、dockerを起動したOSのシェルとが表示が似ている場合には、どちらで捜査しているか間違えることがあります。dockerの入力促進記号(comman prompt)に気をつけてください。

## ファイル共有または複写

dockerとdockerを起動したOSでは、ファイル共有をするか、ファイル複写するかして、生成したファイルをブラウザ等表示させてください。参考文献欄にやり方のURLを記載しています。

複写の場合は、dockerを起動したOS側コマンドを実行しました。お使いのdockerの番号で置き換えてください。複写したファイルをブラウザで表示し内容確認しました。


```
(base) root@b350954ba6b4:/# cd Python-Deep-Learning/
(base) root@b350954ba6b4:/Python-Deep-Learning# ls
Chapter 01  Chapter 02	Chapter 03  Chapter 04	Chapter 05  Chapter 06	Chapter 07  Chapter 08	Chapter 09  LICENSE  README.md
(base) root@b350954ba6b4:/Python-Deep-Learning# cd Chapter\ 01
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 01# ls
Chapter1_ex1_v2.py  Chapter1_ex2_v2.py	Chapter1_ex3_v2.py
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 01# python Chapter1_ex1_v2.py 

Accuracy: 0.98
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 01# python Chapter1_ex2_v2.py 

Misclassified samples: 2
Accuracy: 0.97
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 01# python Chapter1_ex3_v2.py 
Misclassified samples: 3
Accuracy: 0.96
'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.
'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.
'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.
/opt/conda/lib/python3.6/site-packages/matplotlib/figure.py:448: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
  % get_backend())
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 01# vi Chapter1_ex3_v2.py 
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 01# python Chapter1_ex3_v2.py 
Misclassified samples: 3
Accuracy: 0.96
'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.
'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.
'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 01# ls
Chapter1_ex1_v2.py  Chapter1_ex2_v2.py	Chapter1_ex3_v2.py  ex3.png
```
## Chapter 02

```
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 02# python Ch2Example.py 
  File "Ch2Example.py", line 139
    print "Final prediction"
                           ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Final prediction")?
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 02# vi Ch2Example.py 
```
print "Final prediction"
を
print("Final prediction")
に変更。

```
(base) root@b350954ba6b4:/Python-Deep-Learning/Chapter 02# python Ch2Example.py 
epochs: 0.0
[0 0] 0.31634987228520156
[0 1] 0.38455314510086014
[1 0] 0.49960366414001517
[1 1] 0.5470092417007291
epochs: 1.0
[0 0] 0.10110562119575021
[0 1] 0.4983062530300437
[1 0] 0.5483740117095983
[1 1] 0.6358128781126651
epochs: 2.0
[0 0] 0.07164948329787552
[0 1] 0.8610758132814952
[1 0] 0.8502850626450229
[1 1] 0.07158530421971639
epochs: 3.0
[0 0] 0.01758656789925367
[0 1] 0.966663773401989
[1 0] 0.9651222166853127
[1 1] 0.011468668342141863
epochs: 4.0
[0 0] -0.0017118993569207345
[0 1] 0.9815292663780985
[1 0] 0.9828812324283913
[1 1] -0.0003037091869647862
epochs: 5.0
[0 0] 0.0026985374081322524
[0 1] 0.9885083594808965
[1 0] 0.9891298042443863
[1 1] 0.015552778145753128
epochs: 6.0
[0 0] 0.005625211435815758
[0 1] 0.9922099656276941
[1 0] 0.9915443580479175
[1 1] 0.01694332658239157
epochs: 7.0
[0 0] 0.0019544398675402134
[0 1] 0.9934850143000605
[1 0] 0.9934672674082785
[1 1] 0.0007886110283729943
epochs: 8.0
[0 0] 0.0036493566842660274
[0 1] 0.9950489745378326
[1 0] 0.9943655959618727
[1 1] 0.003149359618503074
epochs: 9.0
[0 0] 0.0023304944233086483
[0 1] 0.9958242355532402
[1 0] 0.9953474336963716
[1 1] 0.006106035948582399
Final prediction
[0 0] 0.003032173692500074
[0 1] 0.9963860761357731
[1 0] 0.9959034563937058
[1 1] 0.0006386449217581
'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.
'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.
/opt/conda/lib/python3.6/site-packages/matplotlib/figure.py:448: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
  % get_backend())
```



# 2. dockerを自力で構築する方へ

ここから下は、上記のpullしていただいたdockerをどういう方針で、どういう手順で作ったかを記録します。
上記のdockerを利用する上での参考資料です。本の続きを実行する上では必要ありません。
自力でdocker/anacondaを構築する場合の手順になります。
dockerfileを作る方法ではありません。ごめんなさい。
## docker

ubuntu, debianなどのLinuxを、linux, windows, mac osから共通に利用できる仕組み。
利用するOSの設定を変更せずに利用できるのがよい。
同じ仕様で、大量の人が利用することができる。
ソフトウェアの開発元が公式に対応しているものと、利用者が便利に仕立てたものの両方が利用可能である。今回は、公式に配布しているものを、自分で仕立てて、他の人にも利用できるようにする。
## python

DeepLearningの実習をPhthonで行って来た。
pythonを使う理由は、多くの機械学習の仕組みがpythonで利用できることと、Rなどの統計解析の仕組みもpythonから容易に利用できることがある。
### anaconda

pythonには、2と３という版の違いと、配布方法の違いなどがある。
Anacondaでpython3をこの１年半利用してきた。
Anacondaを利用した理由は、統計解析のライブラリと、JupyterNotebookが初めから入っているからである。
## docker公式配布

ubuntu, debianなどのOSの公式配布,gcc, anacondaなどの言語の公式配布などがある。
これらを利用し、docker-hubに登録することにより、公式配布の質の確認と、変更権を含む幅広い情報の共有ができる。dockerが公式配布するものではなく、それぞれのソフト提供者の公式配布という意味。
### docker pull

docker公式配布の利用は、URLからpullすることで実現する。
### docker Anaconda

anacondaが公式配布しているものを利用。

```
$  docker pull kaizenjapan/anaconda-keras
Using default tag: latest
latest: Pulling from continuumio/anaconda3
Digest: sha256:e07b9ca98ac1eeb1179dbf0e0bbcebd87701f8654878d6d8ce164d71746964d1
Status: Image is up to date for continuumio/anaconda3:latest

$ docker run -it -p 8888:8888 continuumio/anaconda3 /bin/bash
````
実際にはkeras, tensorflow を利用していた他のpushをpull

##apt-get

```shell-session
(base) root@d8857ae56e69:/# apt-get update

(base) root@d8857ae56e69:/# apt-get install -y procps

(base) root@d8857ae56e69:/# apt-get install -y vim

(base) root@d8857ae56e69:/# apt-get install -y apt-utils

(base) root@d8857ae56e69:/# apt-get install sudo
```

# #ソース git

```
(base) root@f19e2f06eabb:/# git clone https://github.com/PacktPublishing/Deep-Learning-with-Hadoop
```



# docker hubへの登録

```
$ docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
caef766a99ff        continuumio/anaconda3   "/usr/bin/tini -- /b…"   10 hours ago        Up 10 hours         0.0.0.0:8888->8888/tcp   sleepy_bassi

$ docker commit caef766a99ff kaizenjapan/anaconda-valentino

$ docker push kaizenjapan/anaconda-valentino
```

# 参考資料(reference)
## hadoop on docker 

DockerでHadoop
https://qiita.com/ykchat/items/6e6e742b610d9a6e3611

hadoop cluster@docker container
https://qiita.com/esmjp/items/bb04c4c2512f9edcf1db


dockerでhadoopクラスター作成
https://qiita.com/uni-3/items/ae8724e7b8a403169844

Dockerを知らなくてもDockerコンテナでHadoop環境を構築する
https://qiita.com/FKuro_/items/fbe04c04a97a996490ec

Hadoop multi node cluster on Docker
https://qiita.com/Lewuathe/items/26583f8206c2f231e6b7

docker-composeでnamenodeとdatanodeの簡易なyarnのhadoopクラスタを作成してみる
https://qiita.com/letusfly85/items/bd14c68b99ec7d7ca098

## 機械学習

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

dockerで機械学習(1) with anaconda(1)「ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装」斎藤 康毅 著
https://qiita.com/kaizen_nagoya/items/a7e94ef6dca128d035ab

dockerで機械学習(2)with anaconda(2)「ゼロから作るDeep Learning2自然言語処理編」斎藤 康毅 著
https://qiita.com/kaizen_nagoya/items/3b80dfc76933cea522c6

dockerで機械学習(3)with anaconda(3)「直感Deep Learning」Antonio Gulli、Sujit Pal　第1章,第2章
https://qiita.com/kaizen_nagoya/items/483ae708c71c88419c32

dockerで機械学習(71) 環境構築(1) docker どっかーら、どーやってもエラーばっかり。
https://qiita.com/kaizen_nagoya/items/690d806a4760d9b9e040

dockerで機械学習(72) 環境構築(2) Docker for Windows
https://qiita.com/kaizen_nagoya/items/c4daa5cf52e9f0c2c002

dockerで機械学習(73) 環境構築(3) docker/linux/macos bash スクリプト, ms-dos batchファイル
https://qiita.com/kaizen_nagoya/items/3f7b39110b7f303a5558

dockerで機械学習(74) 環境構築(4) R 難関いくつ？
https://qiita.com/kaizen_nagoya/items/5fb44773bc38574bcf1c

dockerで機械学習(75)環境構築(5)docker関連ファイルの管理
https://qiita.com/kaizen_nagoya/items/4f03df9a42c923087b5d

OpenCVをPythonで動かそうとしてlibGL.soが無いって言われたけど解決した。
https://qiita.com/toshitanian/items/5da24c0c0bd473d514c8

サーバサイドにおけるmatplotlibによる作図Tips
https://qiita.com/TomokIshii/items/3a26ee4453f535a69e9e

Dockerでホストとコンテナ間でのファイルコピー
https://qiita.com/gologo13/items/7e4e404af80377b48fd5

Docker for Mac でファイル共有を利用する
https://qiita.com/seijimomoto/items/1992d68de8baa7e29bb5


「名古屋のIoTは名古屋のOSで」Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 ５つの関門
https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af

64bitCPUへの道 and/or 64歳の決意
https://qiita.com/kaizen_nagoya/items/cfb5ffa24ded23ab3f60

ゼロから作るDeepLearning２自然言語処理編　読書会の進め方（例）
https://qiita.com/kaizen_nagoya/items/025eb3f701b36209302e


Ubuntu 16.04 LTS で NVIDIA Docker を使ってみる
https://blog.amedama.jp/entry/2017/04/03/235901

# 文書履歴(document history)
ver. 0.10 初稿 20181022
### 最後までおよみいただきありがとうございました。

いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.

Please press the like icon 💚　and follow me for your happy life.