Hadoop完全分布式集群搭建
Hadoop分布式集群搭搭建(环境:Linux虚拟机上)
1.准备工作:(规划主机名,ip及用途,先搭建三台,第四台动态的添加
用途栏中,也可以把namenode,secondaryNamenode及jobTracker
分开部署,看实际需求,不唯一)
主机名 机器ip 用途
cloud01 192.168.1.101 namenode/secondaryNamenode/jobTracker
cloud02 192.168.1.102 datanode/taskTracker
cloud03 192.168.1.103 datanode/taskTracker
cloud04 192.168.1.104 datanode/taskTracker
2.配置linux环境(以下参照伪分布式的搭建)
2.1修改主机名(cloud01,cloud02,cloud03)
2.2修改每台机器的ip(按照自己分配的)
2.3修改主机名与ip的映射关系
(只在cloud01上修改,改完后拷贝到其它机器上就行,指令:
scp /etc/profile cloud02:/etc/
scp /etc/profile cloud03:/etc/)
2.4关闭防火墙
2.5重启
3.安装jdk(参照伪分布式的搭建,版本以jdk1.6.0_45为例)
只需要在一台机器上安装,然后拷贝到其他机器上(软件最好统一管理)
例如在cloud01上jdk安装在/soft/java下
(使用指令:scp -r /soft/java/ cloud02:/soft/
scp -r /soft/java/ cloud03:/soft/
就可以把jdk拷贝过去了.但是我们暂时不拷贝过去,等下面hadoop安装好后,一起拷过去)
4.安装hadoop集群(hadoop版本以hadoop-1.1.2为例)
4.1上传hadoop压缩包到/soft目录下,并解压到该目录下(参照伪分布式的搭建)
4.2配置hadoop(这次需要配置6个文件)
4.21hadoop-env.sh
在第九行
export JAVA_HOME=/soft/java/jdk1.6.0_45 (注意把前面的#号去掉)
4.22core-site.xml
<!-- 指定HDFS的namenode的通信地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://cloud01:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/soft/hadoop-1.1.2/tmp</value>
</property>
4.23hdfs-site.xml
<!-- 配置HDFS副本的数量(根据需求,实际情况自己定义,默认为3份) -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
4.24mapred-site.xml
<!-- 指定jobtracker地址 -->
<property>
<name>mapred.job.tracker</name>
<value>cloud01:9001</value>
</property>
4.25masters(指定secondarynamenode地址)
cloud01
4.26slaves(指定子节点)
cloud02
cloud03
4.3将配置好的hadoop拷贝到其他两台机器上
直接将soft那个文件夹都拷贝过去(里面包含了jdk和hadoop,所以强烈建议
文件要统一管理)
指令:
scp -r /soft/ cloud02:/
scp -r /soft/ cloud03:/
4.4配置ssh免登
是主节点到子节点的免登陆
即cloud01到cloud02和cloud03的免登陆
在cloud01上生成即可
指令:ssh-keygen -t rsa
然后拷贝到其它两台机器上
指令:ssh-copy-id -i cloud02
ssh-copy-id -i cloud03
4.5格式化hadoop
只需要在cloud01(主节点namenode)上格式化就行
指令:hadoop namenode -format
4.6验证
启动集群 指令:start-all.sh
如果启动过程,报错safemode相关的Exception
执行命令:hadoop dfsadmin -safemode leave(退出安全模式)
再次启动hadoop
然后jps一下,查看各台机器,看是否和规划好的用途一样即可)
OK,如果和规划好的一样,就大功告成了.
5.动态添加一台节点
(在实际生产过程中,很常见,很实用)
cloud04 192.168.1.104 datanode/taskTracker
5.1通过clone的方式添加一台linux(以clone cloud01为例.实际生产过程中不会这样,
因为实际生产过程中很少用虚拟机,都是直接服务器.注意,clone时,
得先把要clone的机器给停掉)
5.2修改主机名,ip地址,配置映射文件,关闭防火墙,再hadoop配置
文件slaves中添加cloud04,设置免登陆,重启
(clone的话,就无需再配置映射文件,和关闭防火墙了.因为
你clone的那台机器已经配置好了)
5.3重启机器后,分别启动datanode和taskTracker
指令:hadoop-daemon.sh start datanode
hadoop-daemon.sh start tasktracker
5.4在cloud01上即namenode所在节点上运行命令刷新
hadoop dfsadmin -refreshNodes
5.5验证
http://linux的ip:50070(hdfs管理界面)
看是否多了一个节点,如果多了一个,则大功告成了!
6.删除一台节点(此处为收集)
6.1在cloud01上修改/soft/hadoop-1.1.2/conf/hdfs-site.xml文件
添加配置信息:
<property>
<name>dfs.hosts.exclude</name>
<value>/soft/hadoop-1.1.2/conf/excludes</value>
</property>
6.2确定要下架的机器
dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个。
6.3强制重新加载配置
指令:hadoop dfsadmin -refreshNodes
6.4关闭节点
指令:hadoop dfsadmin -report
可以查看到现在集群上连接的节点
正在执行Decommission,会显示:
Decommission Status : Decommission in progress
执行完毕后,会显示:
Decommission Status : Decommissioned
6.5再次编辑excludes文件
一旦完成了机器下架,它们就可以从excludes文件移除了
登录要下架的机器,会发现DataNode进程没有了,但是TaskTracker依然存在,
需要手工处理一下
相关阅读: