Linux下Hadoop集群配置

    

      最近开始接触Hadoop,首先从Hadoop的安装入手,本文将记录本人安装Hadoop的初体验。

      Hadoop可以用以下三种支持的模式中的一种启动Hadoop集群:单机模式、伪分布式模式、完全分布式模式,本文将介绍配置完全分布式模式。

      前置说明:本人是在Vmware上虚出了两个CentOS6.4进行玩耍的,Hadoop采用的是1.2.1版本(官网:http://hadoop.apache.org/),JRE是jre1.7.0_51。

      两个虚拟主机的说明见下表,其中node1作为Master:NameNode和JobTracker,node2作为Slave:DataNode和TaskTracker。 

     下面介绍安装过程:

     1.准备工作

      关闭防火墙和selinux,下载JRE并正确安装,vi 两台机器的 /etc/hosts,添加ip和host名对应关系,并确保能通过ping node1/node2能ping通。  

     两台机器皆添加用户 # useradd hadoop ,passwd hadoop hadoop,su至hadoop用户,到官网下载hadoop-1.2.1.tar,tar xzfv 至/home/hadoop目录下。同时,为hadoop配置PATH环境变量,# ll -a,然后添加 :/home/hadoop/hadoop-1.2.1/bin至原.bash_profile的 PATH后,同时export PATH。

     

     2.配置节点间SSH无密码登录

     在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程,这就需要在节点之间执行指令的时候是不需要输入密码的形式,故需要配置SSH运用无密码公钥认证的形式。当然,前提各节点的sshd服务已启动。

     具体过程如下:

     a.生成密钥对  # cd /home/hadoop,# ssh-keygen -t rsa,此时会在hadoop用户目录下面生成隐藏.ssh目录,可以使用# ll -a查看其。这个命令将为hadoop上的用户hadoop生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passwd的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/hadoop/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接复制过去就行。

    b.生成authorized_keys文件  进入.ssh文件夹,然后将id_rsa.pub复制到authorized_keys文件(两台机器都需要执行)

    #  cd .ssh
    #  cp id_rsa.pub authorized_keys #生成authorized_keys文件    
    #  ssh node2 #测试无密码登陆,第一可能需要密码,输入hadoop用户的密码即可

    c.node1 node2密钥互通  在node2执行以下命令:
    #  scp authorized_keys hadoop@node1:/tmp   #先复制authorized_keys到node1的tmp目录中去
    #  cat /tmp/authorized_keys>>/home/hadoop/.ssh/authorized_keys  #把公钥追加到文件后面,注意这个操作是在node1上
   
 现在node1上的authorized_keys文件已经包含了两台主机的公钥。最后把node1上的authorized_keys再复制回node2上。

    #  scp /home/hadoop/.ssh/authorized_key hadoop@node2:/home/hadoop/.ssh

    其实,这一步操作就是使node1、node2的authorized_keys相同且包含node1、node2密钥。

    d.设置authorized_keys访问权限  # chmod 644 authorized_keys ,然后使用# ssh node2 ,不需要密码即证明配置无密钥SSH登录成功。

    

    3.配置hadoop

    cd至hadoop-1.2.1文件夹下。

    配置conf/hadoop-env.sh的JAVA_HOME


    配置conf/core-site.xml


    其中fs.default.name是NameNode的URI。hdfs://主机名:端口/,hadoop.tmp.dir :Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。

    配置conf/mapred-site.xml


  
  其中mapred.job.tracker是JobTracker的主机(或者IP)和端口。主机:端口。/home/hadoop/hadoop_home/mar目录需要提前创建。

    配置conf/hdfs-site.xml


    其中dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错,此处配置为1。此处的name1和data1等目录不能提前创建,如果提前创建会出问题。

    配置conf/masters 和 conf/slaves  masters主节点配置为node1,slaves从节点配置为node2。

    上述已经在node1上完成了hadoop的配置,由于我两台虚拟机是clone的,所以直接将node1上的hadoop.1.2.1文件夹scp到node2上即可。执行命令:  # scp -r /home/hadoop/hadoop-1.2.1 hadoop@node2:/home/hadoop/

    

    4.启动hadoop

    首先,格式化一个新的分布式文件系统:#  bin/hadoop namenode -format  注意如果已经有使用ing的fs请选择n。

    启动Hadoop守护进程:
    # bin/start-all.sh
    Hadoop守护进程的日志写入到 ${HADOOP_LOG_DIR} 目录 (默认是 ${HADOOP_HOME}/logs)。

    浏览NameNode和JobTracker的网络接口,它们的地址默认为:
    NameNode - http://localhost:50070/
    JobTracker - http://localhost:50030/
   

    将输入文件拷贝到分布式文件系统:
    # bin/hadoop fs -put conf input

    运行发行版提供的示例程序:
    # bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
    

    注意:如果出现 java.io.IOException: Not a file: hdfs://node1:19488/user/hadoop/input/conf 或者 put target input conf is a directory 异常时,请使用 # hadoop dfs -ls input 命令查看input是否正确,

    如果不正确,使用 # hadoop dfs -rmr input删除后,再重新操作。

    

    附,HDFS常用操作

    hadoop dfs -ls 列出HDFS下的文件
    hadoop dfs -ls input 列出HDFS下某个文档中的文件
    hadoop dfs -put 1.txt input/2.txt 上传文件到指定目录并且重新命名,只有所有的DataNode都接收完数据才算成功
    hadoop dfs -get input/1.txt test.txt 从HDFS获取文件并且重新命名为test.txt,同put一样可操作文件也可操作目录
    hadoop dfs -rmr out 删除指定文件从HDFS上
    hadoop dfs -cat in/* 查看HDFS上in目录的内容
    hadoop dfsadmin -report 查看HDFS的基本统计信息,结果如下
    hadoop dfsadmin -safemode leave 退出安全模式
    hadoop dfsadmin -safemode enter 进入安全模式


    查看输出文件:
    将输出文件从分布式文件系统拷贝到本地文件系统查看:
    # bin/hadoop fs -get output output 
    # cat output/*
    或者 在分布式文件系统上查看输出文件:
    # bin/hadoop fs -cat output/*
    完成全部操作后,停止守护进程:
    # bin/stop-all.sh

    综上,即完成了hadoop的配置即运行测试。


    参考资料:http://hadoop.apache.org/docs/r1.2.1/


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值