Ubuntu下hadoop的集群式分布配置

    JDK 6u45

    Hadoop 0.20.203.0

首先,保证要征用的几台电脑在同一个网域内(即IPv4的前三个数字是一样的),建议适用静态IP以免每次启动更改hosts文件:

    Master:192.168.1.2

    Slave1:192.168.1.3

    Slave2:192.168.1.4

1、更改IP:

    Ubuntu的IP更改在右上角,如图:

    

    选择“Edit Connections”,进入到下图:

    

    选中你的网络,然后点击旁边的Edit,选择IPv4Settings选项卡,选择Manual(静态),然后填写你的网络信息,保存退出重新连接即可

2、更改计算机名:

    确保每一台电脑都有一个相同的用户名,如果不一样,请创建一个新的用户。以下是更改计算机名的方法:

    打开hosts文件:

sudo gedit /etc/hosts
    如下:

    

    将红框处的信息删掉,然后仿照第一排,加入自己电脑的IP地址和自己想取的计算机名(也就是@后面的那个名字),此处笔者更改如下:

    192.168.1.2              Master

    同时,也一次性将其它从节点的IP和计算机名加到其中,最后内容如下:

    

    保存退出

    然后打开hostname文件:

sudo gedit /etc/hostname
    将里面的内容更改为刚才改的计算机名(别把从节点也改成Master了哦):

    

    验证是否成功:

ping Slave1

    几台电脑之间能够相互ping通就说明成功

3、配置SSH无密码登录:

    ①安装SSH服务:

sudo apt-get install openssh-server

        有可能不成功,如果不成功,请先更新下系统:

sudo apt-get update

    ②配置各台电脑自己的无密码登录:

        执行命令:

ssh-keygen -t rsa -P ""

        路径确认的时候直接回车,默认路径即可(/home/hadoop/.ssh/id_rsa,这是笔者的路径)。

        退到home目录下,进入.ssh文件夹:

cd .ssh

        把id_rsa.pub追加到授权的key里去,执行如下语句:

cat id_rsa.pub >> authorized_keys</span>

        authorized_keys文件本来不存在,但执行这条命令后它将自动生成

        执行完后更改authorized_keys的权限为600,否则之后要出错(一定要改),如果.ssh文件夹是自己创建而不是在生成密码时自动创建的,那.ssh的权限也要改,改成700。

sudo chmod 600 authorized_keys

        完成后可以用ssh localhost验证一下。

        其余Slave也如此配置

    ③配置Master无密码登录各Slave:

        将Master的id_rsa.pub追加到各Slave的authorized_keys文件中即可。

        首先将Master的id_rsa.pub文件远程复制到各Slave上(此时依然在.ssh文件夹中):

scp id_rsa.pub hadoop@Slave1:~/
scp id_rsa.pub hadoop@Slave2:~/
        然后将刚才复制过去的文件追加到他们各自的authorized_keys文件中,追加过程和刚才的追加过程一样,这里不在赘述

    ④配置各Slave无密码登录Master:

        此过程为③的逆过程,将各Slave的id_rsa.pub文件追Master的authorized_keys文件里即可


以下过程均以Master为例,配置好后将其分发到各Slave即可

4、JDK和Hadoop的安装请参考如下连接:

http://blog.csdn.net/marshal0826/article/details/18178591

    请先看这个链接里的内容,因为集群分布的配置和伪分布差不过,下面的内容仅是与伪分布配置的不同之处。

5、配置hadoop,以Master为例(这些文件都在hadoop文件夹的conf文件夹中,请先进入这个文件夹。再提醒各位读者,下面的内容千万别照抄)

    ①配置core-site.xml:

        打开core-site.xml文件:

sudo gedit core-site.xml

        在<configuration>和</configuration>之间添加如下内容:

<property>
    <name>fs.default.name</name>
    <value>hdfs://Master:9000</value> //这里Master代替的就是你的IP,所以可以将Master换成IP,但如果IP一变动,这个文件也要改
</property> 
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/hadoop/tmp</value> //这也要改哦
</property></span>

        保存退出

    ②配置hdfs-site.xml:

        打开这个文件,在<configuration>和</configuration>之间添加如下内容:dfsg

<property>
    <name>dfs.replication</name>
    <value>2</value> //如果大于3,则从节点不能低于3个,这里设置成2,因为只有两个从节点
</property> 
<property>
    //用于存放主节点的信息,比如fsimage文件(这个文件相当重要,没有他无法读取HDFS的内容),一般设置多个地址,
    //只需在<value>与</value>之间以逗号分隔每个地址
    <name>dfs.name.dir</name>
    <value>/home/hadoop/hadoop/namedata</value>    
</property>
<property>
    //设置从节点数据的存放位置,也可以设置多个
    <name>dfs.data.dir</name>
    <value>/home/hadoop/hadoop/data</value>    
</property></span>

        保存退出

    ③配置mapred-site.xml:

        打开这个文件,在<configuration>和</configuration>之间添加如下内容:

<property>
    <name>mapred.job.tracker</name>
    <value>Master:9001</value>//此处和core-site.xml差不多
</property>
//以下内容可以暂时不用设置,但从经验来看,还是设置一下为好
<property>
    //一个节点上最大能运行的Map数量(默认是两个,但从经验来看,如果数据量大而机器又旧,两个是带不起来的)
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>1</value>
</property>
<property>
    //每个节点最大能运行的reduce数量,默认是1个,这里写出来是为了让大家知道在哪里改这个数据
    <name>mapred.tasktracker.reduce.tasks.maximum</name>
    <value>1</value>
</property>
<property>
    //我相信大家一定会遇到“java heap space”的问题,除非各位是算法高手,并且机器内存很大
    //这个用于设置程序运行时(jvm虚拟机)的内存容量
    <name>mapred.child.java.opts</name>
    <value>-Xmx4096m</value>
</property></span>

    ④配置masters文件:

        打开这个文件,删掉localhost,添加Master的计算机名,笔者的Master的计算机名就叫Master,更改后保存退出保存退出。

    ⑤配置slaves文件:

        将各Slave的计算机名添加到slaves文件中,一个名字一行,保存退出。


    至此,Master上的hadoop配置完成,而各Slave上的hadoop配置,如果大家不闲麻烦,可以挨个配置,毕竟只有两三台嘛,就当是熟悉熟悉配置,但也可以用远程复制,命令如下:

scp -r '/home/hadoop/hadoop' hadoop@Slave1:~/
scp -r '/home/hadoop/hadoop' hadoop@Slave2:~/

    注意:不要单纯的复制就完事,上述文件中牵扯到文件地址的地方都要改成Slave节点上的地址(core-site.xml和hdfs-site.xml文件)。

5、格式化并启动hadoop

    执行如下格式化语句:

hadoop namenode -format

    执行启动语句启动hadoop:

start-all.sh

    在Master上用jps查看进程,可以看到JobTracker,NameNode,Jps和SecondaryNameNode四个进程(顺序无关紧要),在Slave上用jps可以看到TaskTracker,Jps和DataNode三个进程,如此,hadoop集群式配置分布成功。

也可以在网页上查看集群,浏览器地址栏中输入Master:50070和Master:50030即可


    写下此文仅为记录之用,免得以后配置再去到处找资料。读者可以参考下面的连接,下面的很专业,但是是在CentOS上配置的,读者可以结合起来看:

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

http://www.cnblogs.com/xia520pi/archive/2012/04/08/2437875.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值