在Hadoop的Wiki頁面上放置了一個舊教程: http : //wiki.apache.org/hadoop/AmazonEC2 ,但是最近我不得不遵循本教程,并且我注意到它沒有涵蓋某些Amazon新功能。
建議您已經熟悉Hadoop的基礎來遵循本教程,可以在Hadoop的主頁http://hadoop.apache.org/上找到非常有用的“如何開始”教程。 另外,您必須至少熟悉Amazon EC2內部和實例定義。
當您在Amazon AWS上注冊帳戶時,您可以運行750小時
t1.micro實例,但不幸的是,您無法在此類計算機上成功運行Hadoop。
在以下步驟中,當命令以$開頭時,意味著應在本地計算機中執行該命令,并在#EC2實例中以#命令執行該命令。
創建一個X.509證書
由于我們將使用ec2-tools,因此我們在AWS的帳戶需要有效的X.509證書:
- 創建.ec2文件夾:
$ mkdir ~/.ec2
- 在AWS上登錄
- 選擇“安全證書”,然后在“訪問證書”上單擊“ X.509證書”;
- 您有兩種選擇:
- 使用命令行創建證書:
- 在AWS上登錄
$ cd ~/.ec2; openssl genrsa -des3 -out my-pk.pem 2048
$ openssl rsa -in my-pk.pem -out my-pk-unencrypt.pem
$ openssl req -new -x509 -key my-pk.pem -out my-cert.pem -days 1095
- 僅在您的機器日期確定的情況下才有效。
- 使用該站點創建證書并下載私鑰(請記住將其放在?/ .ec2中)。
設置Amazon EC2-Tools
- 下載并解壓縮ec2-tools;
- 編輯?/ .profile以導出ec2-tools所需的所有變量,因此您不必在每次打開提示時都這樣做:
- 以下是應附加到?/ .profile文件的示例:
- 導出JAVA_HOME = / usr / lib / jvm / java-6-sun
- 出口EC2_HOME =?/ ec2-api-tools- *
- 導出PATH = $ PATH:$ EC2_HOME / bin
- 出口EC2_CERT =?/ .ec2 / my-cert.pem
- 要訪問實例,您需要進行身份驗證(出于安全方面的明顯原因),通過這種方式,您必須創建密鑰對(公共密鑰和私有密鑰):
- 在https://console.aws.amazon.com/ec2/home上,單擊“密鑰對”,或
- 您可以運行以下命令:
- 以下是應附加到?/ .profile文件的示例:
$ ec2-add-keypair my-keypair | grep –v KEYPAIR > ~/.ec2/id_rsa-keypair
$ chmod 600 ~/.ec2/id_rsa-keypair
設置Hadoop
下載并解壓縮Hadoop后,您必須編輯src / contrib / ec2 / bin / hadoop-ec2-env.sh中提供的EC2配置腳本。
- AWS變量
- 這些變量與您的AWS賬戶(AWS_ACCOUNT_ID,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY)相關,可以在登錄到您的賬戶的安全憑證中找到它們;
- 安全變量
- 安全變量(EC2_KEYDIR,KEY_NAME,PRIVATE_KEY_PATH)是與EC2實例的啟動和訪問相關的變量。
- 選擇一個AMI
- 根據要運行的Hadoop版本(HADOOP_VERSION)和實例類型(INSTANCE_TYPE),應使用正確的映像來部署實例:
- 您可以使用許多公共AMI圖像(它們必須滿足大多數用戶的需求)來列出,鍵入
- 選擇一個AMI
$ ec2-describe-images -x all | grep hadoop
- 或者,您可以構建自己的映像,然后將其上傳到Amazon S3存儲桶;
- 選擇您要使用的AMI之后,基本上可以在hadoop-ec2-env.sh上編輯三個變量:
- S3_BUCKET:將要使用的圖像(例如hadoop-images)放置在存儲桶中,
- ARCH:您選擇的AMI映像(i386或x84_64)的體系結構,以及
- BASE_AMI_IMAGE:映射AMI圖像的唯一代碼,例如ami-2b5fba42。
- 其他可配置變量是JAVA_VERSION,您可以在其中定義將與實例一起安裝的版本:
- 您還可以提供二進制文件(JAVA_BINARY_URL)所在的鏈接,例如,如果您有JAVA_VERSION = 1.6.0_29,則可以使用JAVA_BINARY_URL = http://download.oracle.com/otn-pub/java/ jdk / 6u29-b11 / jdk-6u29-linux-i586.bin。
跑步!
- 您可以將src / contrib / ec2 / bin的內容添加到PATH變量中,以便能夠從打開提示的位置運行獨立的命令;
- 要啟動EC2集群并啟動Hadoop,請使用以下命令。 參數是集群名稱(hadoop-test)和從站數(2)。 群集啟動時,公共DNS名稱將打印到控制臺。
$ hadoop-ec2 launch-cluster hadoop-test 2
- 要從“集群”登錄到主節點,請輸入:
$ hadoop-ec2 login hadoop-test
- 登錄到主節點后,便可以開始作業:
- 例如,要測試您的集群,您可以運行hadoop * -examples.jar已提供的pi計算:
- 登錄到主節點后,便可以開始作業:
# cd /usr/local/hadoop-*
# bin/hadoop jar hadoop-*-examples.jar pi 10 10000000
- 您可以在http:// MASTER_HOST:50030 /上查看工作進度。 其中MASTER_HOST是群集啟動后返回的主機名。
- 工作完成后,群集仍處于活動狀態。 要關閉,請使用以下命令:
$ hadoop-ec2 terminate-cluster hadoop-test
- 請記住,在Amazon EC2中,實例是按小時計費的,因此,如果您只想進行測試,則可以在集群上再玩幾分鐘。
參考: Hadoop + Amazon EC2 –我們的JCG合作伙伴 Rodrigo Duarte在Thinking Bigger博客上的更新教程 。
翻譯自: https://www.javacodegeeks.com/2012/11/hadoop-amazon-ec2-an-updated-tutorial.html