之前写过一篇hadoop 伪分布式模式 , 主要用于学习之用 , 毕竟这个技术要真正的落实到工作上,很多配置不亲手写下, 很难消化过来, 今天特意搭建一下, 并写下来作以后查看;
说下搭建的环境 (3台机器, 1台 master, 2 台slaver):
1. centos 5.8 64位 ;
2. hadoop 版本 : 1.2.1 , 目前hadoop1中最新且毕竟稳定的
3. jdk : 1.6 , 必须64位的
因前面写过一篇伪分布式,这里主要详细说下不同的地方:
下面的操作只需要在其中一台机子操作, 然后直接拷贝整个虚拟机,作为其他2台
1. 安装centos系统到虚拟机 , root 用户下 配置IP地址, hostname , DNS域名绑定 , 关闭防火墙(因对这块暂时不了解,先全部关闭) , 这些基本操作和伪分布式是一样的;
2. 安装jdk , 配置环境变量 , 同样参考其他;
3. 安装hadoop(普通用户) , 这里有个注意的地方, 就是你要以什么用户角色去操作hadoop , 是以普通用户还是root用户, 在实际的工作中 , root账户账号只有管理人员才会有,其他都是使用普通用户去搭建环境 , 这样可以保证系统的管理和安全性 , 下面我都是以普通用户的角色去操作hadoop , 当然你要用root用户也行 , 这样就不用管什么权限的问题:
3.1 解压hadoop到用户的home目录下,比如我的是/home/hadoop , 这里不能解压到其他地方,因为其他普通用户没有权限去写或执行 , 只有读的权限 , 不是后面启动会报错;
3.2 现在的目录是/home/hadoop/hadoop1.2.1 , 可以重名名一下/home/hadoop/hadoop, OK之后配置hadoop的环境变量, 这里需要切换到root下才能修改/etc/profile , 完后source 文件;
3.3 hadoop配置文件修改: 这里的配置和伪分布基本一样,修改一个文件hdfs-site.xml
1. hadoop-env.sh
2. core-site.xml
3. hdfs-site.xml
修改其dfs.replication 的value为2 即可, 因为有2个副本
4. mapred-site.xml
3.4 设置master/slaver 节点:
1. 修改master文件: 清空并加入master的主机名, 比如我是hadoop1;
2. 修改slaver文件(salver机子可不配置): 清空并加入slaver的主机名,比如hadoop2
hadoop3
4. 好了, 3台机子相同的部分已经配置完毕, 现在讲虚拟机完全拷贝一个单独的虚拟机,
下面的操作的在3台机子都必须同时做对应的修改 (普通用户下):
4.1 肯定先将IP地址配置好了, 加上3台机子的DNS绑定, hostname等 ;
4.2 相互ping下3台机子是否连通 , ping IP还有主机名;
4.3 SSH 免密码登录, 是在~/.ssh目录下:
1. 3台机子执行ssh-keygen -t rsa , 生成公密钥;
2. 将3台机子的密钥文件id_rsa.pub文件合并成一个文件 , 并重命名为authorized_keys , 修改其权限为700, 就是给当前用户增加执行的权限 , 不然后面启动会有提示要输入"yes/no"; 这个文件同时存在3台机子中;
5. OK, 这里的全部最基本配置已经完成了,下面可以启动hadoop了
5.1 格式化Master机子 , 只需在其执行就行 : hadoop namenode -format , 提示成功可以启动;
5. start-all.sh , 也只需要在master执行一次即可 , 这里的启动后和伪分布式不一样,因为伪分布只有一台机子,所以 进程都在一台机子上, 真正的分布式 , master机子的进程有:NameNode , SeconderNameNode , JobTracker 3个;
Slaver机子的进程有 : DataNode , TaskTracker 2个, 这里非常好理解的 ; 后面的hadoop命名操作就和之前一模一样了
完毕了, 其实搭建过伪分布式, 真的分布式也不是很困难 , 我搭建的时候主要是遇到了权限的问题 , 困扰了一下 , 同样也增加我对linux和hadoop的理解, 有得有失 , 上面就还有一个防火墙要了解处理 , 大家百度下应该没问题.