详细解析 hadoop 分布式布局
发布时间:2022-05-13 12:34:17 所属栏目:云计算 来源:互联网
导读:详细解析 hadoop 分布式布局: 1.硬件环境 共有 3 台机器,均使用的 linux 系统,Java 使用的是 jdk1.6.0。 配置如下: hadoop1.example.com:192.168.2.1(NameNode) hadoop2.example.com:192.168.2.2(DataNode) hadoop3.example.com:192.168.2.3 (DataNode) had
详细解析 hadoop 分布式布局: 1.硬件环境 共有 3 台机器,均使用的 linux 系统,Java 使用的是 jdk1.6.0。 配置如下: hadoop1.example.com:192.168.2.1(NameNode) hadoop2.example.com:192.168.2.2(DataNode) hadoop3.example.com:192.168.2.3 (DataNode) hadoop4.example.com:192.168.2.4 主机与IP之间有正确解析 对于 Hadoop 来说,在 HDFS 看来,节点分为 Namenode 和 Datanode,其中Namenode 只有一个, Datanode 可以是很多;在 MapReduce 看来,节点又分为Jobtracker 和 Tasktracker,其中 Jobtracker 只有一个,Tasktracker 可以是很多。我是将 namenode 和 jobtracker 部署在 hadoop1 上, hadoop2, hadoop3 作为 datanode和 tasktracker 。当然你也可以将 namenode ,datanode ,jobtracker,tasktracker 全部部署在一台机器上(这样就是伪分布式)。 2.目录结构 由于 Hadoop 要求所有机器上 hadoop 的部署目录结构要相同,并且都有一个相同的用户名的帐户。 我 的 三 台 机 器 上 是 这 样 的 : 都 有 一 个 hadoop 的 帐 户 , 主 目 录是/home/hadoop。 添加用户hadoop 复制 #userad -u 800 hadoop 1. 下载hadop-1.2.1.tar.gz 解压 #tar zxf hadop-1.2.1.tar.gz 复制 #ln -s hadoop-1.2.1 hadoop #mv hadoop-1.2.1 /home/hadoop/ #cd /home/hadoop #chown -R hadoop.hadoop hadoop-1.2.1/ #passwd hadoop 给用户hadoop创建密码 下载jdk-6u32-linux-x64.bin 复制 sh jdk-6u32-linux-x64.bin cd ~ mv jdk1.6.0_32 hadoop-1.2.1/ cd hadoop-1.2.1/ 创建软链接,以便与日后的更新、升级 ln -s jdk jdk1.6.0_32 3.SSH设置 在 Hadoop 启动以后,Namenode 是通过 SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置 SSH 使用无密码公钥认证的方式。 首先要保证每台机器上都装了 SSH 服务器,且都正常启动。实际中我们用的都是 OpenSSH,这是 SSH 协议的一个免费开源实现。 以本文中的 3 台机器为例,现在 hadoop1 是主节点,它需要主动发起 SSH连接到 hadoop2 ,对于 SSH 服务来说, hadoop1 就是 SSH 客户端,而hadoop2,hadoop3 则是 SSH 服务端,因此在 hadoop2,hadoop3 上需要确定 sshd 服务已经启动。简单的说,在 hadoop1 上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到 hadoop2 上,这样,比如当 hadoop1 向 hadoop2 发起 ssh 连接的时候,hadoop2 上就会生成一个随机数并用 hadoop1 的公钥对这个随机数进行加密并发送给 hadoop1,hadoop1 收到这个加密的数以后用私钥进行解密,并将解密后的数发送回hadoop2,hadoop2 确认解密的数无误后就允许 hadoop1 进行连接了。这就完成了一次公钥认证过程。 对于本文中的 3 台机器,首先在 hadoop1 上生成密钥对: 复制 #su - hadoop $ssh-keygen 这个命令将为 hadoop1 上的用户 hadoop 生成其密钥对。生成的密钥对id_rsa,id_rsa.pub,在/home/hadoop/.ssh 目录下。 复制 $ssh-copy-id localhost $ssh-copy-id 192.168.2.2 $ssh-copy-id 192.168.2.3 发布密钥到你本地和hadoop2、hadoop3 试着登录本地和hadoop2、hadoop3看是否有密码验证,无密码即验证成功 下载jdk-6u32-linux-x64.bin 复制 sh jdk-6u32-linux-x64.bin cd ~ mv jdk1.6.0_32 hadoop-1.2.1/ cd hadoop-1.2.1/ 创建软链接 ln -s jdk jdk1.6.0_32 4.环境变量 在 ~/hadoop-1.2.1/conf/ 目 录 下 的 hadoop-env.sh 中 设 置Hadoop 需 要 的 环 境 变 量 , 其 中 JAVA_HOME 是 必 须 设 定 的 变 量 。HADOOP_HOME 变量可以设定也可以不设定,如果不设定, HADOOP_HOME默认的是 bin 目录的父目录,即本文中的/home/hadoop/hadoop。 vim~/hadoop-1.2.1/conf/hadoop-env.sh export JAVA_HOME=/home/hadoop/hadoop/jdk 先进行简单测试: 复制 $cd /home/hadoop/hadoop/ $mkdir input $cp conf/* input/ $bin/hadoop jar hadoop-examples-1.2.1.jar $bin/hadoop jar hadoop-examples-1.2.1.jar grep input output 'dfs[a-z.]+' $cd output $cat * 统计文件中的单词: 复制 $bin/hadoop jar hadoop-examples-1.2.1.jar $bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input test $cd test/ $cat * (编辑:揭阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐