Hadoop Hive用にDockerのイメージを作ってみた
動機
- Hiveのテスト時にいちいちEMRを起動したくない
参考にしたもの
DockerとDocker Composeについては以下のサイト
Apache Bigtopについては以下のサイト
how i install bigtop 1.1.0 on ubuntu 16.04 · GitHub
Running various Bigtop components - Apache Bigtop - Apache Software Foundation
使い方
Windowsの場合はsudoいらない
$ sudo docker pull hiroyuking/docker-hiveserver2 $ sudo docker-compose -f docker-compose.yml up $ sudo docker exec -it dockerhiveserver2_hiveserver2_1 /bin/bash
意外ににDockefileは簡単に書けるようだ。しかしADDやCMDという動的な処理は1ファイルにつき1回に制限されている。
この特性を理解すれば本番環境でDockerというのもいいかもしれない。
今のところよさげな特徴
- 起動が早い
- 共有が簡単
- VMをパッケージ化できる
文系エンジニアだがCourseraの機械学習コースを修了した
感想
学習期間
- 2月初旬に始めていたはずなのだが、結局終わったのは5月下旬。4ヶ月かかっている。
- 本来3ヶ月で終わるべきだが補習授業みたいな感じで期間を延ばしてもらえる
- Courseraの携帯アプリを使って電車とか布団の中でもできたのでそれはよかった
難しさ
- 振り返るとWeek2とWeek5が鬼のように難しかった
- プログラミング課題はOctaveと線形代数に慣れてくるとクリアできるようになった
- 英語のリスニング力は字幕のおかげで必要なし
- それよりもリーディング力がないとついていけないだろう
学習しとけばよかったものについては以下に
nantonaku-shiawase.hatenablog.com
学習内容の振り返り
文系エンジニアにとっては、とにかく「行列、線形代数」、「ニューラルネットワーク」の理解が突破のカギのように思います。
- Week1
- Week2
- Week3
- ロジスティック回帰、複数要素の分類問題、オーバーフィッティング問題の解決
- Week4
- ニューラルネットワークの概要
- Week5
- Week6
- 交差検定、偏りと分散、学習曲線、歪度のあるデータ
- Week7
- Week8
- K平均法、主成分分析
- Week9
- 密度推定、協調フィルタリング、行列の分解
- Week10
- ミニバッチ、大規模データの処理、Map-Reduce
- Week11
- Sliding Window (移動窓) 解析
AOJ - ITP1_7_D (行列の積) を解いてみた
ITP1_7_Dは、今自分の中でブームの行列の積の問題です。生で計算しないにしても、機械学習にも大いに関係があります。
AOJ - ITP1_7_D
Matrix Multiplication | Aizu Online Judge
自分の回答
行列の積をプログラムに起こすと?
もし自分がJavaで行列計算をするのであれば、JAMA: Java Matrix Package を使う気がします。JAMAは見た感じちゃんとオブジェクト指向的な気がします。ちなみにJavaの行列計算は全体的にパフォーマンス悪めっぽいので実際の大規模データには向かないかもしれません。
問題の内容
問題自体は2つの行列を単純に掛け算するのみです。インプットの例は以下、
1:数値n, m, lが与えられる
3 2 3
2:行列 A[n][m] が与えられる、縦の数がn, 横の数がm
1 2 0 3 4 5
3:行列 b[m][l] が与えられる、縦の数がm, 横の数がl
1 2 1 0 3 2
問題の解法
手計算だとわかるのですが、これをプログラム化するのに結構苦戦しました。
行列計算の参考リンク
行列同士を掛け算すると、外側の要素が答えの要素になります。
[行列の積]
●[m×n型][n×p型]=[m×p型]
積が定義されるためには,左の列数と右の行数が等しくなければなりません。結果は,[m×p型]となります。
なので、解答を保持する行列C = A*bとおくと、
4:行列 C[n][l] を0で初期化する
0 0 0 0 0 0 0 0 0
5:行列 C[n][l] を変数i,j,kを使って埋めます。
変数は以下の範囲で動きます、が最初は行列Cの出来上がりの構造を考えたほうがいいでしょう。
- 0 <= i < n
- 0 <= j < m
- 0 <= k < l