Hadoop集群配置


在完成hadoop伪分布式配置后,就可以开始进行进行hadoop的集群配置。下面的环境都是基于伪分布式单节点配置成功的基础上进行的,即已经安装配置了SSH,安装完JDK,伪分布式单节点wordcount测试成功。


  1. SSH无密码登录配置

环境:3个虚拟机,系统都为Ubuntu11.10

ip说明

192.168.47.129 master

192.168.47.131 slave1

192.168.47.132 slave2


对每个datanode虚拟机进行设置下面第123步骤(以slave1为例)

  1. 设置主机名 及 IP


改名称:

sudo gedit /etc/hostname => slave1

注:第一次使用可能会没权限更改,要对文件的权限进行修改。chmod 777 /etc/hostname


  1. 配置SSH


首先安装ssh

$ sudo apt-get install ssh
$ sudo apt-get install rsync

sudo apt-get install openssh-server

创建公钥私钥:ssh-keygen –t rsa

期间会要求输入一些信息,直接按回车就可以。这样,在默认的路径(其中mini 是当前用户名)/home/mini/.ssh 目录下创建私钥 id_rsa 和一个公钥id_rsa.pub


利用ssh –version可以查看ssh是否安装成功


  1. ssh的公钥上传到namenode节点


cd .ssh

cp id_rsa.pub datanode1.id_rsa.pub

scp datanode1.id_rsa.pub namenode节点的ip地址:/home/mini/.ssh

(在我的配置方案中,是192.168.47.129:/home/mini/.ssh)

选择yes之后,提示输入namenode节点的密码

上传后,到namenode的虚拟机上查看,发现已经有datanode1.id_rsa.pub,表示上传成功


  1. 复制master的文件到slave

在收到所有 datanode 发送过来的公钥文件之后,要综合这些文件(包括自身),并将这些文件发送到每个节点上:

cp id_rsa.pub authorized_keys

cat datanode1.id_rsa.pub>> authorized_keys

cat datanode2.id_rsa.pub>> authorized_keys

scp authorized_keys 192.168.47.131:/home/mini/.ssh

scp authorized_keys 192.168.47.132:/home/mini/.ssh


这时要查看下ssh配置是否成功,使用 ssh 命令: ssh 其他机器ip ,如果不需要密码就可以登录,就说明配置成功。如果还需要密码,或者干脆无法登录,则需要重启电脑。重启之后再次使用 ssh 命令,如果还需要密码或者无法登录,则需要重新重新进行配置。


【问题】

连接的时候显示no route to host

【解决方案】

查看一下ip是否变动,可能因为ip变化导致无法连接


  1. 集群配置

master中进行修改


  1. 修改IP与主机名对应关系


修改主机的/etc/hosts文件:sudo gedit /etc/hosts

将集群中各个主机的IP与主机名都列在此处:

192.168.47.129 master

192.168.47.131 slave1

192.168.47.132 slave2


注意要将第一二行(127.0.0.1127.0.1.1)先用 # 注释掉


  1. 配置hadoop-1.0.4/conf中的几个配置文件


  • 配置core-site.xml

    <name>fs.default.name</name>

    <value>hdfs://master:9000</value>

    <description>HDFSURI,文件系统://namenode标识:端口号</description>

 

    <name>hadoop.tmp.dir</name>

    <value>/home/hadoop/sysdata/1.0.4/tmp</value> 

    <description>namenode上本地的hadoop临时文件夹</description>


  • 配置hdfs-site.xml

    <name>dfs.name.dir</name> 

    <value>/home/hadoop/sysdata/1.0.4/name</value> 

    <description>namenode上存储hdfs名字空间元数据 </description>

 

    <name>dfs.data.dir</name> 

    <value>/home/hadoop/sysdata/1.0.4/data</value> 

    <description>datanode上数据块的物理存储位置</description> 

 

     <name>dfs.replication</name> 

    <value>1</value>

    <description>副本个数,不配置默认是3,应小于datanode机器数量</description>

 

  • 配置mapred-site.xml

    <name>mapred.job.tracker</name>

    <value>master:9001</value>

    <description>jobtracker标识:端口号,不是URI</description>

 

    <name>mapred.local.dir</name> 

    <value>/home/hadoop/sysdata/temp</value> 

    <description>tasktracker上执行mapreduce程序时的本地目录</description>

 

    <name>mapred.system.dir</name> 

    <value>/tmp/hadoop/mapred/system</value>

    <description>这个是hdfs中的目录,存储执行mr程序时的共享文件</description>

 


  • 配置masters文件

把里面内容改为namenode的主机名

master

  • 配置slaves文件

把里面内容改为datanode的主机名

slave1

slave2


  1. 复制配置好的各文件到所有数据节点上

root用户下:

scp /etc/hosts 数据节点ip地址:/etc/hosts

scp /etc/profile 数据节点ip地址:/etc/profile

scp /usr/lib/jvm/jdk 数据节点ip地址:/usr/lib/jvm

scp –r /home/hadoop 数据节点ip地址:/home


【问题】

传输时说not a regular file

【解决方案】

可能你传输的是一个文件夹,要加 -r 进行文件夹的传输


  1. namenode进行格式化

cd /home/hadoop/deploy/hadoop-1.0.4/bin

./hadoop namenode –format

如果没有报错,这表示成功


【问题】

./hadoop namenode –format时出现以下错误

13/03/25 21:03:51 ERROR namenode.NameNode: java.io.IOException: Cannot create directory /home/hadoop/sysdata/1.0.4/name/current

at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:297)

at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1320)

at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1339)

at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1164)

at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1271)

at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)

【解决方案】

root权限进行格式化即可


【问题】

格式化namenode出现cannot create directory /home/hadoop/sysdata/hdfs/name/current错误提示

【解决方案】

hadoop的目录权限设为当前用户可写sudo chmod -R a+w /home/hadoop,授予hadoop目录的写权限


  1. 启动hadoop所有进程

./start-all.sh

 

【问题】

遇到slave2: chown: changing ownership of `/home/hadoop/deploy/hadoop-1.0.4/libexec/../logs': Operation not permitted

【解决方案】

sudo chown -R mini /home/hadoop来解决,即将hadoop主目录授权给当前mini用户


【问题】

Jobtracker没启动,查log发现

org.apache.hadoop.security.AccessControlException: The systemdir hdfs://master:9000/tmp/hadoop/mapred/system is not owned by mini

【解决方案】

修改hadoop的配置文件:conf/hdfs-core.xml, 找到 dfs.permissions 的配置项 , 将value值改为 false


  1. ./hadoop dfsadmin –report查看集群运行情况。


  1. 做集群测试

创建input目录 ./hadoop dfs –mkdir input

之后上传两个文本文件到hdfsinput

./hadoop put /home/hadoop/core/data/data_in/*.txt input

查看是否上传成功 ./hadoop –ls input

 


下面我们运行hadoop的自带的wordcount程序

./hadoop jar ./../hadoop-examples-1.0.4.jar wordcount input output

 

在网页上192.168.47.129:50070中查看filesystem中的user里面的output

 

发现结果正确。


至此hadoop 的hdfs环境已经好了,可以跑mapreduce程序了。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值