先说明,Hadoop2.x向下兼容,支持Hadoop1.x的配置方式,单NameNode节点部署方式,JobTracker和TaskTracker的方式,这种配置方式相当于放弃了Hadoop2.x的高可用和联邦功能。 高可用的HDFS在部署上节点类型和数量较多,对任务调度管理更为合理,整体效率比Hadoop1.x高出许多,其整体架构也和Hadoop1.x差距很大,但是对用户透明,其HDFS的对外访问方式和Hadoop1.x一致,因此,学习Hadoop2.x的学习成本低了很多,主要是在部署配置方面不同,部署完成后使用方式是相同的。 本篇文章是以学完Hadoop 1.x的前提才能看的哦!其中的配置步骤,过程没像Hadoop1.x的教程写的那么详细,但是学完Hadoop1.x的童鞋看到这篇文章的内容肯定是很容易看懂的,特此提醒!
温馨提醒: 根据HA(High Available高可用)和Federation(联邦)的理论结构图,把每个节点怎么设置怎么分布做成表格全部设计好再开始上机设置哦!
官方参考文档: http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoophdfs/HDFSHighAvailabilityWithQJM.html
Hadoop 2.x 高可用HDFS安装部署步骤 1.安装jdk,设置ssh免密码登录 2.上传hadoop安装包(64位的需要下载源码包自行编译) 3.解压hadoop并设置软链 4.配置core-site.xml,hdfs-site.xml,yarn-site.xml 4.配置slaves,不要配置master(高可用的JournalNode替代了SecondaryNameNode) 5.将本节点的配置文件复制到其他所有节点上,配置同步(建议写个shell同步脚本方便日后使用)
hdfs-site.xml配置: 1.配置dfs.nameservices:配置集群唯一名称,相当于是ZooKeeper的地址 2.配置dfs.ha.namenodes.[nameservicesID]:配置该nameservices下的多个namenode(包括主备namenode) 3.配置dfs.namenode.rpc-address.[nameservice ID].[name node ID]:配置每个namenode的rpc协议监听地址 4.配置dfs.namenode.http-address.[nameservice ID].[name node ID]:配置每个namenode的http监听地址 5.配置dfs.namenode.shared.edits.dir:配置JournalNode节点地址,格式为 (qjournal://node1:8485;node2:8485;node3:8485/[nameservice ID]) 6.配置dfs.client.failover.proxy.provider.[nameservice ID]:配置ZKCF,监听每个namenode的类 7.配置dfs.ha.fencing.methods:当一个NameNode故障之后选择备NameNode变成主NameNode的选择策略,可以设置Java类或者脚本列表(ssh免密码登陆) 8.配置NameNode故障自动切换: dfs.ha.automatic-failover.enabled:设置为true启动自动切换 ha.zookeeper.quorum:配置ZooKeeper的节点地址
core-site.xml配置: 1.配置fs.defaultFS:客户端访问HDFS集群地址,nameservicesID命名 2.配置dfs.journalnode.edits.dir:edits日志文件在JournalNode节点上的文件路径(默认为临时目录,机器重启会没掉,设置最好)
ZooKeeper配置步骤 官方文档:https://zookeeper.apache.org/doc/r3.4.8/zookeeperStarted.html 以下为基本步骤,具体查看上面的连接文档,写得很详细 1.下载ZooKeeper并上传到ZooKeeper的节点机器上; 2.解压ZooKeeper并创建软链; 3. conf/zoo_smaple.cfg复制成文件zoo.cfg,并配置ZooKeeper(设置缓存文件目录和ZooKeeper的集群地址); 4.在设置的ZooKeeper的缓存文件目录下创建myid文件并在里面输入ZooKeeper的id号(ASCII码,是步骤3设置的集群地址,比如属性Server.1的1)(每个ZooKeeper集群节点机器都要); 5.把当前节点配置的ZooKeeper配置文件复制到其他ZooKeeper节点上(建议写个Shell脚本方便日后使用); 6.配置ZooKeeper目录下的bin路径添加到环境变量(方便执行ZK命令); 7.到每个ZooKeeper节点上运行zkServer.sh start; 8.jps命令查看,QuorumPeerMain这个就是ZooKeeper的Java进程名称(都有则ZK启动成功); 9.在其中一个NameNode节点上使用hdfs zkfc -formatZK命令初始化ZooKeeper节点信息。
高可用HDFS首次启动步骤: 事先启动好ZooKeeper! 1.hdfs-daemon.sh start journalnode:测试启动JournalNode节点,看/opt/下的JournalNode文件夹有没生成,成功说明JournalNode可用; 2.hdfs namenode -format:格式化Active的NameNode节点,看/opt/下的hadoop2文件夹有没生成; 3.hdfs namenode -bootstrapStandby:在Standby NameNode节点上执行,同步Active的NameNode节点上的元数据到Standby节点上和JournalNode上,HA的NameNode数据同步完成,看/opt/下的hadoop2文件夹有没生成,成功后所有主备NameNode的内存元数据全部一致; 4.hdfs -initializeSharedEdits:把一个不是HA的NameNode的加入到已经建立的HA集群上,这个是后期添加NameNode可用; 5.stop-dfs.sh:关闭刚才测试开启的所有HDFS节点; 6.start-dfs.sh:启动HDFS集群,jps命令检查多个NameNode、DataNode、JournalNode、ZKFC是否都启动了。
本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/05/31/Hadoop 2.x HDFS使用和配置步骤/
