(1)创建文件夹
首先要下载Hadoop 2.7.7,然后解压至目录“/home/apache/soft/hadoop-2.7.7”。在配置安装Hadoop 之前,需要提前创建好文件夹,用来存储数据、日志文件、数据存储文件。对于数据存储文件夹,创建文件夹命令如下:
对于创建Journal 内容存储文件夹和NameNode 内容存储文件夹,其命令如下:
这里需要配置Java 和Hadoop 的环境变量,配置方法可以参考ZooKeeper 环境变量配置方法,这里只需要修改“/etc/profile”文件,在文件下添加的增加内容为:JAVA_HOME、HADOOP_HOME,并在变量PATH 中添加变量,具体修改内容如下:
修改结束以后,使用“whereis hdfs”和“whereis hadoop”命令,查看是否打印出环境变量位置,如果配置成功,会打印该Hadoop 与Hdfs 的安装路径,如图6.9 所示。
图6.9 whereis 命令图
(3)修改配置文件
修改配置文件的步骤如下:
①修改目录“/home/apache/soft/hadoop-2.7.7/etc/hadoop”下的“hadoop-env.sh”和“yarnenv.sh”两个文件,这两个脚本分别是Hadoop 的环境变量与YARN 的环境变量配置脚本,在脚本中加入Java 环境变量目录,如图6.10 所示。
图6.10 Hadoop-env.sh 与Yarn-env.sh 脚本修改图
②修改配置文件“core-site.xml”,该配置文件主要是设置集群的全局配置文件,用于定义系统级别的参数,如HDFS URL、Hadoop 的临时目录等。
注意:其中存储目录必须是已经存在的文件目录,如果不存在该目录,需要在节点下创建目录,配置文件内容如下:
③修改配置文件“hdfs-site.xml”,该配置文件是对HDFS 的配置文件,通过该配置文件可以修改命名空间NameSpace、指定该集群下有几个NameNode、NameNode 的RPC 通信地址与HTTP 通信地址、DataNode 的存储文件位置、配置JournalNode 的数据共享地址、存储副本数、高可用性方案、ZooKeeper 配置等。
具体每一项的属性内容的解释可以参考表6.4。
表6.4 “hdfs-site.xml”参数解释
这里只是针对HDFS HA 方案的配置方法,请读者思考每个参数的含义。注意:其中存储目录必须是已经存在的文件目录,如果不存在该目录,需要在节点下创建目录,配置文件内容如下:
④修改配置文件“mapred-site.xml”,该配置文件的主要作用是定义MapReduce 参数,包括两部分:JobHistory Server 和应用程序参数,如Reduce 任务的默认个数、任务所能使用的内存大小等。具体参数解释可以参考表6.5。
表6.5 “mapred-site.xml”参数解释
使用命令“cp mapred-site.xml.template mapred-site.xml”得到“mapred-site.xml”文件,配置文件内容如下:
(www.xing528.com)
⑤修改配置文件“yarn-site.xml”,该配置文件主要用于集群资源管理系统参数的配置,例如:配置“ResourceManager、NodeManager”的通信端口、Web 监控端口等,具体参数解释可以参考表6.6。
表6.6 yarn-site.xml 参数解释
在节点中的“yarn-site.xml”配置文件内容如下:
⑥修改Hadoop 的从节点配置文件slaves,slaves 文件的路径为“/home/apache/soft/hadoop-2.7.7/etc/hadoop”,Hadoop 通过本文件可以识别出该集群的子节点有哪些,这里因为使用了三个DataNode 节点,它们分别是:slave1、slave2 和master2,因此,要将这三个添加到slaves文件里,修改的内容为如下:
⑦使用Rsync 向其他节点同步文件,同步的文件主要是之前已经修改过的所有配置文件。同步配置文件包括:主机文件“/etc/hosts”、Hadoop 配置文件“/home/apache/soft/hadoop-2.7.7”。至此,HDFS HA 的环境配置已经介绍完毕,其中有很多配置参数都需要进行练习才能掌握高可用性配置,但是,这些参数也无须死记硬背,只需要知道每个配置文件和参数的作用即可。
(4)高可用集群启动
启动高可用集群的节点服务参考表6.2 中的服务规划情况,而且尤其需要注意的是:严格按照以下给定的启动顺序进行启动,否则集群可能会出现很多种问题。
启动的顺序如下:
所有节点启动ZooKeeper→所有节点启动JournalNode→master1 节点格式化并启动Name-Node→向其他节点同步NameNode 文件→slave1 节点格式化并启动NameNode→master1 和slave1 节点启动zkfc 服务→master2、slave1、slave2 启动DataNode 服务→master1、slave1 启动ResourceManager 服务→验证。
①启动ZooKeeper 集群。启动方式参考本章的6.4.2 小节的ZooKeeper 集群启动方法,配置好环境变量以后,在四个节点上分别使用命令“zkServer.sh start”启动ZooKeeper。然后使用命令“zkServer.sh status”。可以查看四个节点中有一个是领导者(leader),其他是跟随者(follower)。
②所有节点启动JournalNode 服务,使用命令“hadoop-daemon.sh start journalnode”。
两个“NameNode”为了数据同步,会通过一组称作“JournalNodes”的独立进程进行相互通信。当Active 状态的NameNode 的命名空间有任何修改时,会告知大部分的JournalNodes 进程。Standby 状态的NameNode 有能力读取JNs 中的变更信息,并且一直监控Editlog 的变化,将变化应用于自己的命名空间。Standby 可以确保在集群出错时命名空间状态已经完全同步了,如图6.11 所示。
图6.11 JournalNode 同步图
③master1 节点格式化并启动NameNode。master1 节点使用命令“hdfs namenode -format”对该节点进行NameNode 格式化,然后使用命令“hadoop-daemon. sh start namenode”启动master1 节点的NameNode。
④向其他节点同步NameNode 文件。master1 节点格式化以后会在“media/name”目录下会生成Current 文件夹以及文件,该文件需要与其他文件相同,因此,使用Rsync 与其他节点进行同步,其命令如下:
⑤另外一台NameNode,slave1 节点格式化,并启动NameNode。salve1 节点使用命令“hdfs namenode -bootstrapStandby”,将另一台NameNode 的目录的内容复制到该节点的目录下,然后使用命令“hadoop-daemon.sh start namenode”,启动该节点的NameNode。
⑥master1 和slave1 节点启动zkfc 服务。在master1 和slave1 上启动zkfc 服务(zkfc 服务进程名:DFSZKFailoverController),此时,HH 和HH2 就会有一个节点变为Active 状态,使用命令为“hadoop-daemon.sh start zkfc”。
⑦master2、slave1、slave2 启动DataNode 服务。使用命令“hadoop-daemons. sh start datanode”,如果需要启动ResourceManager 服务,在slave1 和master1 节点使用命令“yarn-daemon.sh start resourcemanager”。
至此,HDFS 高可用性已经启动成功,在每个节点查看启动的服务,在每个节点输入命令“jps”,每个节点的启动服务如图6.12 所示。该服务情况与表6.2 对应,说明高可用性服务启动成功。
图6.12 集群服务启动情况
最后打开浏览器,访问http:192.168.6.99:50070 以及http:/ /192.168.6.101:50070,你将会看到两个NameNode,一个是active 而另一个是standby,如图6.13 所示。本章使用了三个节点作为DataNode,从页面中也可以查看到DataNode 的情况,如图6.14 所示。
图6.13 主备节点情况
图6.14 DataNode 节点情况
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。