hadoop2.2.0安装

终于是把Hadoop2.2.0安装成功,虽然还有点问题没有解决,但是这个先暂时用着。

安装环境:Ubuntu10.04  64bit  内核:2.6.39

由于直接下载的Hadoop是只能在32位的机器上用,所以需要先编译。首先下载hadoop-2.2.0-src.tar.gz源码编译以后再使用,编译过程在另一篇博客中。

安装和配置步骤具体如下:

1,主机和ip分配地址

修改主机名:namenode为master,datanode分别为slave1,slave2

vi /etc/hostname     

增加三台机器和ip的映射关系

vi /etc/hosts    编辑

192.168.137.38  master
192.168.137.17  slave1
192.168.137.39  slave2
2,安装jdk

在官网上下载jdk1.7,jdk-7u25-linux-x64.tar.gz

解压缩 tar -zxvf jdk-7u25-linux-x64.tar.gz

            mv jdk1.7.0_25 jdk1.7

设置环境变量 vi /etc/profile

export JAVA_HOME=/home/hadoop/jdk1.7
export JRE_HOME=/home/hadoop/jdk1.7/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
source /etc/profile

我是重启以后java -version显示java版本号

3,配置master到slave1,slave2的无密码登录,安装ssh

在master节点上执行以下命令

ssh-keygen –t rsa –P ''

这条命令是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。

查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。

ll -a | grep .ssh

cd .ssh

ll

接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

在验证前,需要做一件事儿是修改文件"authorized_keys"权限
chmod 600 ~/.ssh/authorized_keys

使用hadoop普通用户验证是否成功。 ssh localhost

无密码登录本机已经设置完毕,接下来的事儿是把公钥复制所有Slave机器上。使用下面的命令格式进行复制公钥:

scp ~/.ssh/id_rsa.pub hadoop@master:~/

上面的命令是复制文件"id_rsa.pub"到服务器master的用户为"hadoop"的"/home/hadoop/"下面

下面就针对slave1节点进行配置。

查看slave1下的/home/hadoop是否有文件id_rsa.pub存在的话

在"/home/hadoop/"下创建".ssh"文件夹

这一步并不是必须的,如果在Slave1.Hadoop的"/home/hadoop"已经存在就不需要创建了,因为我们之前并没有对Slave机器做过无密码登录配置,所以该文件是不存在的。用下面命令进行创建。

mkdir ~/.ssh然后是修改文件夹".ssh"的用户权限,把他的权限修改为"700",用下面命令执行:

chmod 700 ~/.ssh

到目前为止Master.Hadoop的公钥也有了,文件夹".ssh"也有了,且权限也修改了。这一步就是把Master.Hadoop的公钥追加到Slave1.Hadoop的授权文件"authorized_keys"中去。使用下面命令进行追加并修改"authorized_keys"文件权限:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

当前面的步骤设置完毕,就可以使用下面命令格式进行SSH无密码登录了。

ssh slave1


最后记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉。

rm –r ~/id_rsa.pub

这样就完成了master无密码登录slave1了,同样的操作在slave2上执行。

4,hadoop2.2.0安装过程

配置hadoop环境变量vi /etc/profile

export HADOOP_DEV_HOME=/home/hadoop/hadoop-2.2.0
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

source /etc/profile

配置之前需要在master本地文件系统中创建一下目录

/home/hadoop/hadoop/dfs/name

/home/hadoop/hadoop/dfs/data

/home/hadoop/hadoop/tmp

将hadoop安装目录授权给hadoop用户

chown -R hadoop:hadoop /home/hadoop/

这里要涉及到的配置文件有7个:

~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh

~/hadoop-2.2.0/etc/hadoop/yarn-env.sh

~/hadoop-2.2.0/etc/hadoop/slaves

~/hadoop-2.2.0/etc/hadoop/core-site.xml

~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

以上个别文件默认不存在的,可以复制相应的template文件获得。

配置文件1:hadoop-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7)

配置文件2:yarn-env.sh

修改JAVA_HOME值(exportJAVA_HOME=/usr/java/jdk1.7)

配置文件3:slaves (这个文件里面保存所有slave节点)

写入以下内容:

slave1

slave2

配置文件4:core-site.xml

<configuration>
     <property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
   </property>
   <property>
     <name>hadoop.tmp.dir</name>
     <value>/home/hadoop/hadoop/tmp</value>
   </property>
</configuration>
配置文件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/hadoop/hadoop/dfs/name</value>
    </property>
   <property>
       <name>dfs.datanode.data.dir</name>
       <value>/home/hadoop/hadoop/dfs/data</value>
   </property>
   <property>
        <name>dfs.replicaation</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
     </property>
</configuration>
配置文件6: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>
配置文件7:yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
   <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.nodemanager.local-dirs</name>
     <value>${hadoop.tmp.dir}/nodemanager/local</value>
   </property>
  <property>
    <name>yarn.nodemanager.address</name>
    <value>0.0.0.0:8034</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>10240</value>
    <description>the amount of memory on the NodeManager in GB</description>
  </property>
  <property>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>${hadoop.tmp.dir}/nodemanager/remote</value>
    <description>directory on hdfs where the application logs are moved to </description>
  </property>

  <property>
    <name>yarn.nodemanager.log-dirs</name>
    <value>${hadoop.tmp.dir}/nodemanager/logs</value>
    <description>the directories used by Nodemanagers as log directories</description>
  </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.scheduler.class</name>
       <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</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>
把这些配置文件复制到其他节点

scr -r /home/hadoop/hadoop-2.2.0  hadoop@slave1:~/

scr -r /home/hadoop/hadoop-2.2.0  hadoop@slave2:~/

7,启动hadoop

进入安装目录: cd ~/hadoop-2.2.0/

格式化namenode:./bin/hdfs namenode –format

再次启动

./sbin/hadoop-daemon.sh start namenode

经验证

jps

6296 NameNode

6332 Jps

NameNode成功启动了

启动hdfs:./sbin/start-dfs.sh

此时在master上面运行的进程有:namenode secondarynamenode

slave1和slave2上面运行的进程有:datanode

启动yarn:./sbin/start-yarn.sh

此时在master上面运行的进程有:namenode secondarynamenoderesourcemanager

slave1和slave2上面运行的进程有:datanode nodemanaget

查看集群状态:./bin/hdfs dfsadmin –report

查看文件块组成: ./bin/hdfsfsck / -files -blocks

查看HDFS: http://192.168.137.38:50070

查看RM: http:// 192.168.137.38:8088

8,运行实例程序

现在一个文件夹里面建立两个文件file01.txt file02.txt里面加入如下内容,具体方法会linux的都会,我就默认你具有了。

file01.txt 

1   
2
3
4
kongxianghe
kong
yctc
Hello World

file02.txt

1  
2
3
4
5
11
2222
kong
Hello
yctc

 将这两个文件放入hadoop的HDFS中,HDFS(Hadoop Distributed File System)就是hadoop的文件系统。

1  
hadoop fs -ls     //查看hdfs目录情况

在HDFS中创建文件夹input

1  
hadoop fs -mkdir -p input     //  -p这个参数是必须加入的hadoop2和之前的版本是不一样的
1  
hadoop fs -put file*.txt input  //  将刚才的两个文件放入到hadoop的文件系统之中

查看这些文件是否已经进入到了hadoop的文件系统之中

1  
hadoop fs -cat input/file01.txt   //查看命令

删除文件命令

1  
hadoop fs -rm -r xxx

确保文件进入到HDFS中之后,我们可以利用hadoop自带的一个叫做wordcount的程序进行文字的查找归类操作

首先要找到hadoop的lib包  我这边贴出来一个hadoop_eclipse_plugin.jar  网盘备份:http://pan.baidu.com/s/1qWLKiba


所有的hadoop的开发jar包和eclipse配置都在里面,目前到2014.01.17开始eclipse还没有官方的插件支持,我这个也是技术大牛在github下载源码自己编译的,关注我的后续我回介绍这方面的东西,加压刚才这个安装包,里面有个lib文件夹,大家都知道那是jar包,找出这样的一个jar包叫做hadoop-mapreduce-examples-2.2.0.jar【注:网上很多教程都是提示wordcount所在的jar包在hadoop-examples-1.0.0.jar中,目前hadoop2中已经将其放入上述jar文件中】


利用如命令进行计算,注意input文件夹是刚才手动在HDFS中建立的,output文件夹不需要自己建立。

1
hadoop jar /home/hadoop/hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount input output

需要等待几分钟的时间,在进行map和reduce的情况下会占用大量的内存,可能超过4GB这时候什么都不要动只需要等待

在浏览器中输入:localhost:8088 然后在左边栏中找到Cluster-->Applications-->FINISHED   刚才的任务就在里。

查看mapreduce的情况,利用命令找到output文件夹,找到里面的文件

1  
hadoop fs -ls output
1  
2
3
Found 2 items
-rw-r--r--   1 root supergroup          0 2014-01-17 10:44 output/_SUCCESS
-rw-r--r--   1 root supergroup         58 2014-01-17 10:44 output/part-r-00000

打开part-r-00000这个文件就是执行结果

1  
hadoop fs -cat output/part-r-00000
结果为
1  
2
3
4
5
6
7
1111    1
2222    1
Hello   2
World   1
kong    2
kongxianghe 1
yctc    2
数据都被统计出来了,成功!
Good Luck!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值