Linux下Nutch-1.0分布式配置.doc
文本预览下载声明
Linux下Nutch-1.0集群配置
詹坤林
中科院研究生院信息学院 2010年5月
目 录
0 集群网络环境介绍 1
1 /etc/hosts文件配置 1
2 SSH无密码验证配置 2
2.1配置所有节点之间SSH无密码验证 2
3 JDK安装和Java环境变量配置 3
3.1 安装 JDK 1.6 3
3.2 Java环境变量配置 3
4 Nutch集群配置 3
5 Nutch集群启动 6
6 Nutch分布式爬虫 8
0 集群网络环境介绍
集群中所有节点均是Cent-OS系统,防火墙均禁用,sshd服务均开启;所有节点上均有一个名为nutch的用户,用户主目录是/home/nutch。
集群包含三个节点:1个namenode,2个datanode,节点之间局域网连接,可以相互ping通。节点IP地址和主机名分布如下:
32 gc03vm12 namenode
42 gc04vm12 datanode01
44 gc04vm14 datanode02
1 /etc/hosts文件配置
namenode节点上vi /etc/hosts,将所有节点的名字和IP地址写入其中,写入如下内容,注意注释掉行:
32 gc03vm12
42 gc04vm12
44 gc04vm14
# centos54 localhost.localdomain localhost
/etc/hosts文件需要复制到所有数据节点上。
2 SSH无密码验证配置
Nutch是基于Hadoop的,Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,datanode向namenode传递心跳信息可能也是使用SSH协议,这是我认为的,还没有做深入了解,datanode之间可能也需要使用SSH协议。假若是,则需要配置使得所有节点之间可以相互SSH无密码登陆验证)。
2.1配置所有节点之间SSH无密码验证
(0)原理
节点A要实现无密码公钥认证连接到节点B上时,节点A是客户端,节点B是服务端,需要在客户端A上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到ssh连接服务端B时,服务端B就会生成一个随机数并用客户端A的公钥对随机数进行加密,并发送给客户端A。客户端A收到加密数之后再用私钥进行解密,并将解密数回传给B,B确认解密数无误之后就允许A进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端A公钥复制到B上。
因此如果要实现所有节点之间无密码公钥认证,则需要将所有节点的公钥都复制到所有节点上。
(1)所有机器上生成密码对
(a)所有节点用nutch用户登陆,并执行以下命令,生成rsa密钥对:
zkl@zkl-ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zkl/.ssh/id_rsa): 默认路径
Enter passphrase (empty for no passphrase): 回车,空密码
Enter same passphrase again:
Your identification has been saved in /home/zkl/.ssh/id_rsa.
Your public key has been saved in /home/zkl/.ssh/id_rsa.pub.
这将在/home/nutch/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
(b)将所有datanode节点的公钥id_rsa.pub传送到namenode上:
cp id_rsa.pub datanode01.id_rsa.pub
scp datanode01.id_rsa.pub namenode节点ip地址:/home/nutch/.ssh
......
cp id_rsa.pub datanode0n.id_rsa.pub
(c)namenode节点上综合所有公钥(包括自身)并传送到所有节点上
cp id_rsa.pub authorized_keys namenode自己的公钥
cat datanode01.id_rsa.pub authorized_keys
......
cat datanode0n.id_rsa.pub authorized_keys
然后使用SSH协议将所有公钥信息authorized_keys复制到所有DataNode的.ssh目录下
zkl@zk
显示全部