IT・ビッグデータ徒然ブログ

関西でインフラ、データ基盤系のエンジニアになるため、転職活動中。

Ubuntu16.04にCDH5を入れる

CDH5をインストールするを読んで、Ubuntuでやろうとしたら思いの外つまづいたので、備忘録代わりに残しておきます。
(今更こんな方法でHadoop入れる人いないと思うけど。。。)

環境

Javaのインストール

ひとまず、java8を先に入れて、PATHを通しておきます。

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get -y install oracle-java8-installer
cat << EOF >> ~/.bashrc
JAVA_HOME=/usr/lib/jvm/java-8-oracle
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PATH
EOF
source ~/.bashrc

Hadoopリポジトリ登録

ここでおおきく躓いた。。。
まず、そもそもリポジトリの概念がCentとUbuntuで異なるので、Ubuntu用のファイルをとってこないと行けない。

# trustyはUbuntu14.04だけど、16.05用のディレクトリがないのでこっちから落としてくる
sudo wget https://archive.cloudera.com/cdh5/one-click-install/trusty/amd64/cdh5-repository_1.0_all.deb

その後、debパッケージを開く

sudo dpkg -i cdh5-repository_1.0_all.deb

次に、リポジトリのキーをUbuntuに入れてあげる。

sudo curl -s https://archive.cloudera.com/cdh5/ubuntu/trusty/amd64/cdh/archive.key | 
sudo apt-key add -

これで準備は完了。。。と思いきや、、、ここでまた一つ問題が・・・

インストールするバージョンを指定する

というのも、このままなにもせずに素直にapt-getすると最新版のCDHが入ってしまう。
今回は都合によりバージョン5.12に指定したいので、
/etc/apt/sources.list.d配下のcloudera-cdh5.listファイルを修正する

cd /etc/apt/sources.list.d
cp cloudera-cdh5.list cloudera-cdh5.list.orig

cat << EOF > cloudera-cdh5.list
deb [arch=amd64] https://archive.cloudera.com/cdh5/ubuntu/xenial/amd64/cdh xenial-cdh5.12 contrib
deb-src https://archive.cloudera.com/cdh5/ubuntu/xenial/amd64/cdh xenial-cdh5.12 contrib
EOF

ポイントは指定するURLで

https://archive.cloudera.com/cdh5/ubuntu/<Ubuntuのバージョン>/amd64/cdh <Ubuntuのバージョン> - <インストールするCDHのバージョン>

みたいにする。

今回は、
+ Ubuntu : 16.04(xenial) + Hadoop : CDH5.12
だったので上のような書き方になった。

ちなみに、書き方を見たい場合は、 https://archive.cloudera.com/cdh5/ubuntu/バージョン>/amd64/cdh/confにあるdistributionsファイルの中のCodenameを見ればわかる。

例: https://archive.cloudera.com/cdh5/ubuntu/xenial/amd64/cdh/conf/distrobutionsの一部

Origin: Cloudera
Label: Cloudera
Codename: xenial-cdh5.11.1
Version: 16.04
Architectures: amd64 source
Components: contrib
Description: Cloudera nightly packages for xenial
SignWith: 02A818DD

Origin: Cloudera
Label: Cloudera
Codename: xenial-cdh5.12.0
Version: 16.04
Architectures: amd64 source
Components: contrib
Description: Cloudera nightly packages for xenial
SignWith: 02A818DD

Origin: Cloudera
Label: Cloudera
Codename: xenial-cdh5.12
Version: 16.04
Architectures: amd64 source
Components: contrib
Description: Cloudera nightly packages for xenial
SignWith: 02A818DD

Hadoopインストール&起動

あとは素直にHadoopを入れて動かすだけ。

sudo apt update
sudo apt-get install -y hadoop-conf-pseudo

sudo -u hdfs hdfs namenode -format

sudo systemctl start hadoop-hdfs-namenode hadoop-hdfs-datanode hadoop-hdfs-secondarynamenode

sudo /usr/lib/hadoop/libexec/init-hdfs.sh


sudo systemctl restart hadoop-hdfs-namenode hadoop-hdfs-datanode hadoop-hdfs-secondarynamenode

sudo systemctl start hadoop-yarn-resourcemanager hadoop-yarn-nodemanager

結論

Cloudera ManagerとCloudera Directorは正義。