HADOOP分布式安装

环境

操作系统:Ubuntu11.04 64

Hadoop版本:1.03

Java版本:1.6.0_35

为了方面配置,我在每台机器上都使用了root用户来操作,但不清楚这是不是最好的,但这样做的确够方便。

 

结点信息:

机器名

IP

作用

master

192.168.56.159

NameNode and JobTracker 

slave-1

192.168.56.160

DataNode and TaskTracker 

slave-2

192.168.56.168

DataNode and TaskTracker

slave-3

192.168.56.169

DataNode and TaskTracker

slave-4

192.168.56.191

DataNode and TaskTracker

 

  

安装jdk

首先Hadoop运行需要Java的支持,所以必须在集群中所有的节点安装JDK,最好是Sun公司的JDK。安装JDK的方法参考:http://blog.sina.com.cn/s/blog_3fe961ae01013eka.html。注意:最好将集群中的JDK都安装在同一目录下,便于配置。实践中,笔者一般将JDK安装在/usr/java这个目录,但并不是必须的。

 

配置host
修改集群中所有机器的/etc/hosts,添加:

192.168.56.159 master  

192.168.56.160 slave-1 

192.168.56.168 slave-2

192.168.56.169 slave-3 

192.168.56.191 slave-4 

 

注意:这里的masterslave-1slave-2等等,指的是机器的机器名(使用命令hostname可以查看本机的机器名),切记,如果不是机器名的话会出问题的,并且集群中所有结点的机器名都应该不一样(一样的情况笔者没有试过,个人认为会出一些莫名其妙的问题,尽量避免吧)。另外,/etc/hosts文件中,要避免同一个hostname对应不同的IP

 

建立SSH无密码登录

首先操作系统上必须安装ssh,并且保证sshd处于运行状态,Hadoop使用ssh来通信。如果没有安装ssh的话,

使用以下命令来安装:

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

 

Hadoop启动以后,namenode是通过SSHSecure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。

namenode生成密钥:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

会在~/.ssh/目录下生成 id_dsa.pub文件,如果我们希望master 结点不需要密码就能使用ssh连接到slave结点,我们需要将master结点上的~/.ssh/id_dsa.pub的内容,添加到slave结点的~/.ssh/authorized_keys这个文件中,原理请参考:http://blog.sina.com.cn/s/blog_3fe961ae01018774.html

如果slave结点的~/.ssh/authorized_keys这个文件不存在,可以直接将~/.ssh/id_dsa.pub文件复制过去并重命名为authorized_keys

scp ~/.ssh/id_dsa.pub root@192.168.56.160:~/.ssh/authorized_keys

可以先将master结点的~/.ssh/id_dsa.pub文件复制到slave结点的~/.ssh/目录下,例如:

scp ~/.ssh/id_dsa.pub root@192.168.56.160:~/.ssh

或用

scp ~/.ssh/id_dsa.pub root@slave-1:~/.ssh

然后在slave结点上执行下面的命令:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 

验证:在master结点上使用ssh连接slave结点如:

ssh root@slave-1

如果未提示输入密码直接登录,则表明设置成功。

 

安装Hadoop

下载Hadoop稳定版,http://hadoop.apache.org/releases.html

下载Hadoop 解压到master服务器的/opt目录下(配置好master结点后再将其复制到其它的服务器上,一般来说,群集中所有的hadoop都安装在同一目录下):

tar xzfv hadoop-1.0.3.tar.gz

方便起见,可以重命名一下解压后的文件夹,

mv  hadoop-1.0.3 hadoop

 

配置hadoop
1.修改conf/hadoop-env.sh,添加JDK支持:

export JAVA_HOME=/usr/java/jdk1.6.0_35

如果不知道你的JDK目录,使用命令echo $JAVA_HOME查看。

 

2.修改conf/core-site.xml,增加下面内容:

<property>

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

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

</property>

 

<property>

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

    <value>/hadoop/tmp/hadoop-${user.name}</value>

</property>

 

3.修改conf/hdfs-site.xml,增加下面内容

<property>

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

    <value>/hadoop/dfs/name</value>

    <description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.</description>

</property>

 

<property>

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

    <value>/hadoop/dfs/data</value>

    <description>Comma separated list of paths on the local filesystem of DataNode where it should store its blocks.</description>

</property>

 

<property>

    <name>dfs.replication</name>

    <value>3</value>

</property>

 

4.修改conf/mapred-site.xml,增加下面内容
<property>

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

    <value>master:9001</value>

    <description>Host or IP and port of JobTracker.</description>

</property>


5. 修改conf/masters,列出所有的master结点:

master

 

6.修改conf/slaves,这个是所有datanode的机器,例如:

slave-1               

slave-2

slave-3

slave-4

 

7.master结点上配置好的hadoop文件夹拷贝到所有的slave结点上,以slave-1为例:

scp -r /opt/hadoop root@slave-1:/opt/

 

启动Hadoop

1.格式化HDFS文件系统的namenode

bin/hadoop namenode –format

2.启动hadoop集群

bin/start-all.sh

 

3.测试

将输入文件复制到分布式文件系统中:
bin/hadoop fs -put conf input

运行自带的示例文件:
bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'

查看输出:

将输出文件从分页式文件系统中复制到本地,然后再查看:
bin/hadoop fs -get output output
cat output/*

或者直接查看分布式文件系统中的输出结果:
bin/hadoop fs -cat output/*

 

4.停止hadoop集群

bin/stop-all.sh

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值