AWS下搭建Hadoop集群

                                                         AWS下搭建Hadoop集群

1. 搭建流程
2. 注册AWS账户
3. 创建Ubuntu Instances

登陆到AWS Console之后,在services列表中选中EC2(EC2用于配置云中的基础设备)点击INSTANCES下的instances

进入到instances显示列表,点击Launch Instance

 
   
 
 

 3.1 Choose AMI

 此处选择: Ubuntu Server 14.04 LTS (HVM) - ami-987724ca 

(注:因为此为Free tier,故选用它做测试及讲解,正式在安装的时候,需要根据自已的AMI需求,选择合适的AMI)

 

 

 3.2 Choose Instance Type

此处选择: t2.micro

 (注:因为此为Free tier,故选用它做测试及讲解用,正式安装的时候,需要根据自己的硬件需求选择合适的instance Type )

 3.3 Configure Instance Details
 此处采用默认配置,此处是配置instance网络,访问控制,监控等信息,在正式安装时,可根据需求配置
 3.4 Add Storage
 此处采用默认配置,可以在Instance运行期进行Storage的横向扩展
 3.5 Tag Instance
 此处为instance新增Tag,如有需要可自主新增,这里添加name为masterTest
 3.6 Configure Security Group
 此处配置instance的安全访问列表,相当于防火墙的功能,可控制那个范围的IP地址,可以经过什么端口,通过什么网络协议访问Instance. 可以为一个VPC设置同一个Security Group也可以为多个Instance设置同一个Security Group. 这里由于测试用,故设置了所有的机器都可以通过TCP或ICMP访问Instance的所有端口
 3.7 Review
 最后检查以上配置是否有问题,如都正确,则点击launch,创建并启动Instance
 3.8 Create keypair
 在点击launch时,需要创建keypair以安全的连接Instance,这里会生成一对密钥,并且由instance保存      公钥,由本地保存私钥,当需要连接到Instance时,必须提供私钥。故一定要下载私钥并保存好,一旦      丢失,则无法连接到instance。

此处下拉选择Create a new key pair, 并输入名称。下载后的keypair为pem文件

扫描二维码关注公众号,回复: 555697 查看本文章

点击Launch完成Instance的所有配置,最后以同样的方式创建Slave1与Slave2两个Instance

4. 配置Ubuntu SSH

4.1   连接 Instance

点击INSTANCES下的instances, 选中刚刚新增的Instance,点击Connect,会发现连接的方式有2种,一种是通过SSH Client,另一种是通过Java SSH Client. 此处选择第一种,通过PuTTY工具连接Instance

注:由于AWS生成的私钥格式为pem,而PuTTY在连接Instance时需要使用ppk格式的私钥,故需要使用PuTTYGen将pem格式的私钥转换为ppk格式
4.2   配置SSH

 

  4.2.1 概述

从图中可以看出,外部的Windows机器在访问Instance时需要传递Private Key. 然后Instance SSH Server获取到Private Key,同时根据用户名称,在/home/{username}/.ssh下获得Public Key,并用Public KeyPrivate Key进行解密验证,如果成功,则连接成功。故在连接时有三个要点需要注意:


  • 必须输入用户登陆名(在PuTTY ConfigurationConnection下的Data配置中,需要填写Auto-login username字段,由于是Ubuntu系统,故username必须为ubuntu
  • 必须传入私钥(在PuTTY Configuration下的Connection->SSH->Auth中,需要配置Private key file for authentication为私钥文件,格式为ppk
  • 传入的私钥格式是Instance能解析的格式(格式必须是PPK

 

  4.2.2 获得ppk私钥文件

  下载puttygen工具,将3.8获得的私钥文件test.pem转换为test.ppk

  首先点击load,加载pem格式的私钥(在3.8环节得到),然后点击save private key保存为ppk格式

 

  4.2.3 获得id_rsa私钥文件      
  使用puttygen工具将私钥导出为OpenSSH key(先是load私钥,再点击Conversions->Export OpenSSH key),生成名称为id_rsa的无后缀私钥文件
  4.2.4 上传id_rsa私钥文件
windows下打开DOS窗口,执行
 Pscp -i PuttyPrivateKey OpenSSHPrivateKey ubuntu@PublicDNS:/home/ubuntu/.ssh         

上传至Ubuntu master.ssh目录下

注:PuttyPrivateKeyWindows连接Ubuntu时需要提供的私钥,需要注明全路径

OpenSSHPrivateKey为生成的用于Ubuntu之间互联的私钥,需要注明全路径

       PublicDNSInstance的对外DNS
  4.2.5 修改id_rsa访问权限

上传之后还需要修改id_rsa的访问权限,否则会抛出“id_rsa are too open”的异常,这里使用命令

chmod 600 id_rsa

修改访问权限

 4.3 配置hosts

 使用命令 sudo vi /etc/hosts

 删除

 

127.0.0.1 localhost
 

 新增

 172.31.27.31   masterTest
 172.31.22.145  slave1Test
 172.31.22.39   slave2Test
 

注: 到这里就可以使用ssh slave1Test 无密码连接slave1Test机器了

 

 

 5. 安装JDK
 
5.1 安装JDK

 l  首先从http://download.oracle.com/下载JDK,要求是64位的Linux版的gz格式

 l  使用Pscp命令将JDK上传至Ubuntu

 l  使用tar命令解压JDK/usr/java/目录中

5.2 配置JDK
   在/etc/profile中配置JDK的环境变量

   

 export JAVA_HOME=/usr/java/jdk1.7.0_55
 export PATH=$PATH:$JAVA_HOME/bin
 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
5.3 验证JDK
  输入java –version,如果出现版本信息,则安装成功,以同样的方式在其它两台Slave机器上安装JDK
 6.安装Hadoop
 
6.1 安装Hadoop

l  首先从http://hadoop.apache.org/releases.html下载hadoop-2.2.0版本的安装包

l  使用pscp命令将Hadoop安装包上传至Ubuntu

l  使用tar命令解压Hadoop/home/Ubuntu/hadoop目录下

l  使用64位的native替换32位的native(由于AWS上的Instance都是64位的,而Hadoop2.2版只有32位的,故有二种方法,       一是直接下载一个64位的native,二是下载hadoop-2.2.0的源码,然后自已编译成64位的hadoop

6.2 配置Hadoop

6.2.1  配置Hadoop环境变量

在/etc/profile中配置Hadoop的环境变量

export HADOOP_HOME=/home/ubuntu/hadoop/hadoop-2.2.0
export PATH=$PATH:$HADOOP_HOME/bin
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

配置完后,执行source /etc/profile命令使配置生效

6.2.2   配置hadoop-env.sh

进入$HADOOP_HOME/etc/hadoop目录下,修改hadoop-env.sh中的

 

export JAVA_HOME=$JAVA_HOME
$JAVA_HOMEJDK的安装路径
6.2.3  配置core-site.xml
<configuration>
   <property>
     <name>fs.defaultFS</name>
     <value>hdfs://master:9000</value>
   </property>
   <property>
     <name>io.file.buffer.size</name>
     <value>131072</value>
   </property>
   <property>
     <name>hadoop.tmp.dir</name>
     <value>file:/home/ubuntu/hadoop/tmp</value>
   </property>
  <property>
    <name>hadoop.proxyuser.hduser.hosts</name>
    <value>*</value>
  </property>
  <property>
    <name>hadoop.proxyuser.hduser.groups</name>
    <value>*</value>
  </property>
</configuration>
 
6.2.4 配置 mapred-site.xml
<configuration>
     <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
     </property>
     <property>
      <name>mapreduce.jobhistory.address</name>
      <value>master:10020</value>
     </property>
     <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
     </property>
</configuration>
 
6.2.5  配置 hdfs-site.xml
<configuration>
<property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>master:9001</value>
</property>
<property>
   <name>dfs.namenode.name.dir</name>
   <value>/home/ubuntu/hadoop/local/hdfs/name</value>
</property>
<property>
   <name>dfs.datanode.data.dir</name>
   <value>/home/ubuntu/hadoop/local/hdfs/data</value>
</property>
<property>
      <name>dfs.replication</name>
      <value>1</value>
  </property>
<property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
</property>
</configuration>
 
6.2.6   配置 yarn-site.xml
<configuration>
  <property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
  </property>
  <property>
   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
  </property>
</configuration>
 
6.2.7  配置masters,slaves

进入到$HADOOP_HOME/etc/hadoop下

  • 配置masters

 

master
 
  • 配置slaves

 

slave1Test
slave2Test
 7. 运行并检测Hadoop
 
7.1 拷贝hadoop-2.2.0

 使用

 scp -r hadoop-2.2.0 Ubuntu@slave1Test:/home/ubuntu/hadoop
 scp -r hadoop-2.2.0 Ubuntu@slave2Test:/home/ubuntu/hadoop
   将hadoop-2.2.0拷贝至slave1Test、slave2Test
7.2 修改slave1Test、slave2Test的hosts

在slave1Test、slave2Test的/etc/hosts文件中添加行

172.31.27.31   masterTest
 以便能跟masterTest进行通信
7.3 启动Hadoop
  •   格式化namenode,使用命令
./$HADOOP_HOME/bin/hadoop namenode -format
  •    启动hadoop,使用命令
./$HADOOP_HOME/sbin/start-all.sh
 

7.4 检查Hadoop运行状态

    7.4.1 使用JPS命令

  • 在master中使用jps出现SecondaryNameNodeNameNodeResourceManager
  • 在slave中使用jps出现DataNodeNodeManager
    7.4.2  使用浏览器


 



 

 8. 运行WordCount
 

 8.1 创建文件

  • ~下创建本地文件夹file,使用命令mkdir file
  • 进入~/file,使用echo “hallo world!” > file1.txt创建file1.txt文件
  • 进入~/file,使用echo “hallo hadoop!” > file2.txt创建file2.txt文件
  • 使用hadoop fs –mkdir /input创建input文件夹
  • file1.txt file2.txt上传至/input文件夹下,用hadoop fs –put file*.txt /input

完成之后的结果通过

hadoop fs -ls /input

 查看结果



 

 8.2 运行WordCount小程序
  • 进入到$HADOOP_HOME/share/hadoop/mapreduce/
  • 使用hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount /input /output命令运行WordCount程序
 8.3 运行结果
 

 
 
 

猜你喜欢

转载自xiaomixin11.iteye.com/blog/2089917