hadoop在CentOS上的安装部署

平台:centOS6.4 ,hadoop版本:1.2.1
网上有大量ubuntu的安装教程,在centos上大致相同,只是在jdk安装和ssh无密码登录方面有些许差别,本文记录了安装的大致过程。
 
1.   jdk安装
     检验系统原版本
# java -version
# rpm -qa | grep java

centOS默认会安装OpenJdk,首先我们要卸载OpenJDK,执行以下操作(不同版本的openjdk信息会有所不同,请根据自己的信息修改):
# rpm -e --nodeps tzdata-java-2012c-1.el6.noarch
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.x86_64

从官网上下载jdk,安装:

# rpm -ivh jdk-7-linux-x64.rpm //JDK默认安装在/usr/java中。
        # java -version

更新环境变量

#vi + /etc/profile

向文件里面追加以下内容:
JAVA_HOME=/usr/java/jdk1.7.0
JRE_HOME=/usr/java/jdk1.7.0/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

使修改生效
# source /etc/profile   //使修改立即生效
# echo $PATH   //查看PATH值

2.创建hadoop用户
    不建议使用root用户直接运行hadoop,因为hadoop间需要互相访问,创建普通用户运行;将hadoop.tar.gz放到该用户下,tar-zxvf 解压缩即可  。  
 
3. 修改hosts文件
    为方便访问,修改/etc/hosts文件
 
4.  无密码登录
 hadoop也不是必须要求无密码登录,但是每次登录slaves都会要去输入密码,所以还是设上好点。
    网上有大量ubuntu的设置方法,但是centOS中要稍微复杂一些。
    无密码登录(host A的用户userA 无密码登录 host B,使用B的用户 userB):
            userA在自己的.ssh目录下生成一对密钥;
            将公钥放到userB的./ssh目录下;
    首先查看/etc/ssh/sshd_config 文件,将下面三行的注释去掉,重启sshd服务:
           #RSAAuthentication yes
            #PubkeyAuthentication yes
            #AuthorizedKeysFile     .ssh/authorized_keys
    登录时userA使用私钥去匹配userB下的公钥 ,配置如下:
        [userA@A ~]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa                    //生成密钥,-t:加密算法;-P 密码,此处为空; -f:路径;
        [userA@A ~]$ cat id_dsa.pub ~/.ssh/authorized_keys                    //将公钥放到授权访问key队列中,这样ssh localhost也可以接受本地该用户的无密码登录,可用于测试;      
        [userA@A ~]$ scp ~/.ssh/authorized_keys userB@B:~/.ssh/         //将authorized_keys传到B的userB目录下
        [userB@B ~]$ chmod 700 ~/.ssh                                                    //将.ssh目录权限改为700,默认是775;否则认证会失败,sshd要求安全性高,只允许用户本身有该目录的访问权限
        [userB@B ~]$ chmod 600 ~/.ssh/authorized_keys                        //修改    authorized_keys 权限;否则同样会认证失败;同样是安全性问题。        
        [userA@A ~]$ ssh userB@B                                                                //测试,如还是需要密码说明配置有问题,ssh
-v 打开debug;tail /var/log/secure -n 20 
查看日志,具体处理      
    在hadoop安装中,nameNode要访问其他的机器,所以用namenode生成密钥放到其他的slaves上。
/**
    采用了vmware虚拟机克隆的方式,需要注意两个问题:
        (1)    记得修改hostname: /etc/sysconfig/network
        (2)    当时修改了一下网卡的设置,造成network重启时,报网卡貌似不存在Device does not seem to be present;
                        这是因为克隆之后eth*中的mac信息和系统文件不符:/etc/udev/rules.d/70-persistent-net.rules;将该文件删除,重启即可;可以再查看该文件然后配置相应的eth*;
**/    
 
5.安装hadoop
    hadoop的安装现在已经非常简单,只需要将hadoop.*.*.tar.gz 解压缩即可(tar -zxvf hadoop-1.2.1.tar.gz),然后修改一下配置文件,基本的环境就可以搭建好了。
    hadoop分为3种运行模式:单机,伪分布,全分布。3种模式的配置方式不一样,我们看一下主要的参数配置区别:
        
    I 单机模式
        hadoop默认单机模式,适合调试开发,只需要将hadoop-env.sh的JAVA_HOME配置好就可以了:
            conf/hadoop-env.sh:
                export JAVA_HOME=        //指向本地jdk目录
    II 伪分布式
        是在一台机器上模拟一个cluster,配置文件如下:
            

conf/core-site.xml:

<configuration>
     <property>
         < name>fs.default.name</name>
         < value>hdfs://localhost:9000</value>
     </property>
</configuration>


conf/hdfs-site.xml:

<configuration>
     <property>
         < name>dfs.replication</name>
         < value>1</value>
     </property>
</configuration>


conf/mapred-site.xml:

<configuration>
     <property>
         < name>mapred.job.tracker</name>
         < value>localhost:9001</value>
     </property>
</configuration>
 
    III 分布式
        修改hadoop配置文件(所有机器都一样)
    (1) conf/hadoop-env.sh
                export JAVA_HOME=        //指向本地jdk目录
    (2)conf/core-site.xml         (NameNode 配置)
            在<configuration>标签下插入:                
            <property>
                  <name>fs.default.name</name>
                  <value>hdfs://hadoopNN:49000</value>
            </property>
            <property>
                  < name>hadoop.tmp.dir</name>
                  < value>/home/jeff/data/hadoop/var</value>
            </property>
            fs.default.name : NameNode的URI。hdfs://主机名:端口/
            hadoop.tmp.dirHadoop的默认临时路径,此文件夹需手工创建;
                                        这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。
                                        不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
    (3) conf/mapred-site.xml    (job-tracker 配置 )
                <property>
                      <name>mapred.job.tracker</name>
                      <value>hadoopNN:49001</value>
                </property>
                <property>
                      < name>mapred.local.dir</name>
                      < value>/home/jeff/data/hadoop/var</value>
                </property>
            mapred.job.tracker :job-tracker的主机和端口
    (4)conf/hdfs-site.xml    (hdfs层的配置)
                
                <property>
                        <name>dfs.name.dir</name>
                        <value>/home/jeff/data/hadoop/name1, /home/jeff/data/hadoop/name2</value>
                </property>
                <property>
                        < name>dfs.data.dir</name>
                        < value>/home/jeff/data/hadoop/data1, /home/jeff/data/hadoop/data2</value>
                </property>
                <property>
                          <name>dfs.replication</name>
                          < value>2</value>
                </property>
           dfs.name.dir:    NameNode  存储名字空间及事务日志路径;逗号代表复制到所有目录做冗余备份 
           dfs.data.dir:   DataNode的数据存储空间,数据将存储在所有目录中
                                        前两个参数中的目录name1,name2,data1,data2系统会自动创建,预先建立可能会报错。
           dfs.replication:    数据复制的数量,默认为3   
    (5)    修改 conf/masters, conf/slaves,一行对应一个机器
                conf/masters:
                    hadoopNN
                conf/slaves:
                    hadoop2
                    hadoop3
                    hadoop4
                    ....
    
6 准备,测试环境
    配置好hadoop后,首先需要格式化hdfs文件系统,进到hadoop/bin目录下(方便以后操作,将bin放到$PATH更方便):
       hadoop namenode -format
    正确格式化后,hadoop就可以运行了:
        start-all.sh    //同时启动hdfs和mapreduce
    测试:
    在hadoop目录下,我们用自带的example.jar中的wordcount测试hadoop的运行:
    hadoop jar hadoop-examples-1.2.1.jar worldcount README.txt output    //注意,这里不是 -jar,没有前面的-    ,否则会报错,说一个类找不到
    统计README.txt文件中的词频,输出在当前目录下的output/part-r-0000
 
    
        
 
 
           
                  
 
 
 
 
 
 
 
 
 
 
 
 
 

 

    

 

 

 

 

 

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值