🦁

EC2でHadoop環境構築できなかった話

2021/01/15に公開

下記記事で作成したAmazon EC2インスタンスにHadoop環境を構築していきたかった.この記事を見てもEC2インスタンスにHadoop環境は構築できません.せいぜいSFTPコマンド表とかSSHのホスト名バージョンとかしか情報ないです.それでも良ければ読んでください.というかアドバイスくれたらうれしいです

結構な時間の奮闘記なので記しておきます

JDKのダウンロード,インストール

OracleのサイトからJDKをダウンロードします
※OpenJDKをyumで持ってきてもダメって書いてある記事を見かけましたが,公式はOpenJDKでもテストしてると言っている?
参考
https://cwiki.apache.org/confluence/display/HADOOP2/HadoopJavaVersions

  1. 作成したインスタンスの「プロセッサのアーキテクチャー」を調べます.

    64bit ARMらしいですだまされました(だまされたわけではないかもですが)
  2. Oracleのサイトで対応するJDKをダウンロード

    ダウンロードしたrpmファイルは,またパスがわかる場所に置きましょう.後ほどEC2インスタンスに送ります.

JDKインストール

sudo yum install -y java-1.8.0-openjdk-devel.x86_64

Hadoopインストール

ここで詰まりました.とりあえずEMR先にやってみます.
インスタンス作り直して,再度試してみます

エラーログもコマンドラインフリーズして消えたという,,

Appendix

試行錯誤しているうち,昔インプットしたLinuxコマンドが浮かんできたので使ってみた記録

sftpプロトコルを使用してJDKをEC2に送る方法

今回コマンドラインでやりますが,GUIツールもあります.FFFTP,FileZillaなどで検索してみてください

sshでいちいちユーザー名@ホストアドレスを入力するのがめんどくさいので

設定で

ssh ~

だけで接続できるようにします.
.ssh/configに下記を追記(なかったら作る)

Host aws-hadoop
	Hostname ec2-3-16-38-216.us-east-2.compute.amazonaws.com
	User ec2-user
	Port 22
	IdentityFile C:\Users\rilak\SAMPLE_KEY.pem

書き方
Host [接続に使いたい名前]

パラメータ 説明
Host 任意の接続名(接続するsshのエイリアス名)
Hostname 接続するサーバーのIPアドレスまたはドメイン
User 接続するユーザー名
Port 接続するポート番号
IdentityFile 秘密鍵のファイルパス
以降,ssh aws-hadoopだけで接続ができます.

stfpで送ってみる

ssh接続した後でしたらexitしておいてください.

  1. aws-hadoopにsftp接続します
    コマンドラインに以下を入力します
sftp aws-hadoop

Connect to AWS Hadoopと出ます

2. JDKのファイルを送ります

put jdk-15.0.1_linux-x64_bin.rpm

sftpコマンド一覧

「サーバー側の」と書いてあるものは,頭に「!」をつければ「ローカル側の」操作になります.
今回サーバーとなるのはEC2インスタンス.ローカルとなるのは自分のコマンドプロンプト・ターミナルです

コマンド 説明
! [コマンド] ローカル側のシェルでコマンドを実行
bye sftpを終了する(exitでも可)
cd [パス] サーバー側のカレントディレクトリを変更
get [ファイル] サーバー上のファイルをローカルにダウンロード
help ヘルプを表示(「?」でも可)
lcd [パス] ローカル側のカレントディレクトリを変更
lls ローカル側のファイルリストを表示
ln シンボリックリンクを作成
lpwd ローカル側のカレントディレクトリを表示
ls サーバー側のファイルリストを表示
mkdir ディレクトリ サーバー側にディレクトリを作成
put [ファイル] ローカルのファイルをサーバーへアップロード
pwd サーバー側のカレントディレクトリを表示
rename [旧ファイル] [新ファイル] サーバー側のファイルを新しい名前に変更
rm [ファイル] サーバー側のファイルを削除

AWSのインスタンスを作成したリージョンに注意

ファイルを送る際,外国リージョンにインスタンスがあったりすると,廉価なインスタンスは回線がとても細いので,送るのに時間がかかります.インスタンス作成時には自分の住んでる地域に一番近いところにしましょう(複数のインスタンスが無駄に遠いリージョンをまたいでいるのも要注意です.多分無駄にお金と時間がかかります).

裏技

裏技というか,踏んだらダウンロードされるリンクを知っていれば,Linuxにはwgetというコマンドがあるので,インスタンスからそれをたたくのも手です(たぶんOracleのサイトは外国にあるので,そのほうが速い説あります)

wget https://download.oracle.com/otn-pub/java/jdk/15.0.1%2B9/51f4f36ad4ef43e39d0dfdbaf6549e32/jdk-15.0.1_linux-x64_bin.rpm

Discussion