预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Linux下Hadoop的分布式配置和使用20Linux下Hadoop分布式配置和使用(适用于0.20及以后版本)詹坤林2010年5月目录介绍20集群网络环境介绍21/etc/hosts文件配置22SSH无密码验证配置32.1选择一:配置Namenode无密码登录所有Datanode32.1选择二:配置所有节点之间SSH无密码验证43JDK安装和Java环境变量配置53.1安装JDK1.653.2Java环境变量配置54Hadoop集群配置55Hadoop集群启动86Hadoop使用106.1客户机与HDFS进行交互106.1.1客户机配置106.1.2列出HDFS根目录/下的文件116.1.3列出当前用户主目录下的文件116.1.4HDFS用户管理116.1.5复制本地数据到HDFS中126.1.6数据副本说明126.1.7hadoop-site.xml参数说明136.1.8HDFS中的路径136.1.8Hadoop相关命令146.2客户机提交作业到集群146.2.1客户机配置146.2.2一个测试例子WordCount156.2.3编写Hadoop应用程序并在集群上运行166.2.4三种模式下编译运行Hadoop应用程序166.2.5提交多个作业到集群18附程序19介绍这是本人在完全分布式环境下在Cent-OS中配置Hadoop-0.19.1时的总结文档,但该文档也适合其他版本的Linux系统和目前各版本的Hadoop(Hadoop-0.20之后的版本配置文件hadoop-site.xml被拆分成了三个core-site.xml,hdfs-site.xml和mapred-site.xml,这里会说明0.20后的版本中如何配置这三个文件)。Hadoop配置建议所有配置文件中使用主机名进行配置,并且机器上应在防火墙中开启相应端口,并设置SSHD服务为开机启动,此外java环境变量可以在/etc/profile中配置。0集群网络环境介绍集群包含三个节点:1个namenode,2个datanode,节点之间局域网连接,可以相互ping通。节点IP地址和主机名分布如下:10.10.97.132gc03vm12namenode10.10.97.142gc04vm12datanode0110.10.97.144gc04vm14datanode02所有节点均是Cent-OS系统,防火墙均禁用,sshd服务均开启并设置为开机启动。所有节点上均创建了一个hadoop用户,用户主目录是/home/hadoop。所有节点上均创建了一个目录/usr/local/hadoop,并且拥有者是hadoop用户。因为该目录用于安装hadoop,用户对其必须有rwx权限。(一般做法是root用户在/usr/local下创建hadoop目录,并修改该目录拥有者为nutch(chown–Rnutch:nutch/usr/local/hadoop)。1/etc/hosts文件配置(1)namenode节点上编辑/etc/hosts文件将所有节点的名字和IP地址写入其中,写入如下内容,注意注释掉127.0.0.1行,保证内容如下:10.10.97.132gc03vm1210.10.97.142gc04vm1210.10.97.144gc04vm14#127.0.0.1centos54localhost.localdomainlocalhost(2)将Namenode上的/etc/hosts文件复制到所有数据节点上,操作步骤如下:root用户登录namenode;执行命令:scp/etc/hostsroot@datanodeip:/etc/hosts2SSH无密码验证配置Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,datanode向namenode传递心跳信息可能也是使用SSH协议,这是我认为的,还没有做深入了解,datanode之间可能也需要使用SSH协议。假若是,则需要配置使得所有节点之间可以相互SSH无密码登陆验证。下面给出了两种配置方式,用户可以选择第一种,若实验中出现问题可选择第二种进行尝试。2.1选择一:配置Namenode无密码登录所有Datanode(0)原理Namenode作为客户端,要实现无密码公钥认证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上。当namenode通过ssh连接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenode。namenode收到加密数之后再用私钥进行解密,并将解密数回传给datanode,datanode