pergrand 发表于 2016-7-9 23:37:47

Hadoop学习之环境搭建

四:环境搭建ClientProtocol是客户端(FileSystem)与NameNode通信的接口DatanodeProtocol是DataNode与NameNode通信的接口NamenodeProtocol是SecondaryNameNode与NameNode通信的接口。
HA集群图解ZK :zookeeperJN :JournalNodeNN :NamenodeDN :datanodeNN

为什么使用HA集群:高可用,当namenode节点挂掉,可以启动备用namenode,可以手动启动,可以通过zookeeper自动切换;利用的zookeeper的监控和临时节点特性。file:///C:/Users/ADMINI~1.ZX-/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png      HDFS的HA,指的是在一个集群中存在两个NameNode,分别运行在独立的物理节点上。在任何时间点,只有一个NameNodes是处于Active状态,另一种是在Standby状态。 Active NameNode负责所有的客户端的操作,而Standby NameNode用来同步Active NameNode的状态信息,以提供快速的故障恢复能力。file:///C:/Users/ADMINI~1.ZX-/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png      为了保证Active NN与Standby NN节点状态同步,即元数据保持一致。除了DataNode需要向两个NN发送block位置信息外,还构建了一组独立的守护进程”JournalNodes”,用来同步FsEdits信息。当Active NN执行任何有关命名空间的修改,它需要持久化到一半以上的JournalNodes上。而Standby NN负责观察JNs的变化,读取从Active NN发送过来的FsEdits信息,并更新自己内部的命名空间。一旦ActiveNN遇到错误,Standby NN需要保证从JNs中读出了全部的FsEdits,然后切换成Active状态。使用HA的时候,不能启动SecondaryNameNode,会出错环境搭建1. 手工HA   HA是为了防止NameNode的单点故障。JournalNode集群的作用是为了同步edits信息,由active NN向standby NN同步。   配置HA的时候,不用配置SecondaryNameNode。SecondaryNameNode的职责由standbyNN完成。   HA中的2个NameNode属于同一个命名空间。      实验环境如下:host99      namenode、datanode、nodemanager、journalnodehost100      namenode、resourcemanager、datanode、nodemanager、journalnodehost101      datanode、nodemanager、journalnode      执行步骤:         (1)创建快照         (2)关闭集群,确保hadoop的各个进程不存在;      删除host99、host100、host101的hadoop_repo里面的所有内容         (3)复制配置文件到三个节点etc/hadoop目录下,覆盖原文件                   (4)在三个节点都启动journalnode进程,命令是hadoop-daemon.shstart journalnode         (5)格式化NameNode然后启动         在host99上执行hdfsnamenode -format   在host99上分别执行hadoop-daemon.sh start namenode   在host100上执行hdfs   namenode   -bootstrapStandby   在host100上分别执行hadoop-daemon.sh start namenode         (6)状态转变         在host99上执行hdfs   haadmin-failover   --forceactive host100host99         (7)启动datanode      在host99上分别执行hadoop-daemons.shstart datanode                  2. 自动HA    实验环境如下:host99      namenode、datanode、nodemanager、journalnode、zookeeperhost100      namenode、resourcemanager、datanode、nodemanager、journalnode、zookeeperhost101      datanode、nodemanager、journalnode、zookeeper   执行步骤:         (1)在host99、host100、host101上搭建zookeeper集群,启动zk集群         (2)关闭hadoop集群,确保hadoop的各个进程不存在;      删除host99、host100、host101的hadoop_repo里面的所有内容         (3)复制配置文件到三个节点etc/hadoop目录下,覆盖原文件         (4)格式化zk集群            在host99上执行hdfs zkfc-formatZK         (5)在三个节点都启动journalnode进程,命令是hadoop-daemon.shstart journalnode         (6)格式化NameNode然后启动         在host99上执行hdfsnamenode -format   在host99上分别执行hadoop-daemon.sh start namenode   在host100上执行hdfs   namenode   -bootstrapStandby   在host100上分别执行hadoop-daemon.sh start namenode         (7)启动datanode   在host99上分别执行hadoop-daemons.sh start datanode      (8)启动ZKFC   在含有NameNode进程的host99、host100上启动zkfc,执行命令hadoop-daemon.sh start zkfc 补充:搭建zookeeper集群1. 解压zookeeper,将解压后的文件改名zookeeper,并将zookeeper/conf/下的.cfg文件重命名zoo.cfg(方面使用)2. 修改配置文件 zookeeper/conf/zoo.cfg 修改存储路径dataDIr在最后添加server.99=host99:2888:3888server.100=host99:2888:3888server.101=host99:2888:3888在刚才设置的dataDir属性对应的目录下创建文件vi myid 给节点起一个编号,编号的值就是server.后面的数字例如在myid 中写入993. 复制zookeeper 到其他节点(host100,host101)上scp -rp zookeeper host99:/usr/local 修改myid 100scp -rp zookeeper host99:/usr/local修改myid 1014. 启动zookeeper 在三个节点上都启动zookeeper/bin/zkServer.sh start查看状态zookeeper/bin/zkServer.sh status hadoop伪分布集群很简单主要是个配置文件的配置在后面有具体步骤          
联盟集群环境:可以有多个命名空间:例如上图的/share/和/user/实际应用中例如电信公司用户的信息,北京用户的信息通过/share/ 这个命名空间进行底层数据访问,上海用户的信息可以通过/user/这个命名空间访问;每个命名空间下又是HA集群1. 配置federationfederation指的是有2个命名空间存在。每个命名空间可以单独部署ha。       实验环境如下:host99      namenode、datanode、nodemanagerhost100      namenode、resourcemanager、datanode、nodemanagerhost101      datanode、nodemanager   执行步骤:         (1)创建快照         (2)关闭集群,确保hadoop的各个进程不存在;      删除host99、host100、host101的hadoop_repo里面的所有内容         (3)复制配置文件到三个节点etc/hadoop目录下,覆盖原文件                   (4)格式化然后启动NameNode         在host99上执行hdfsnamenode -format -clusterId mycluster   在host99上分别执行hadoop-daemon.sh start namenode   在host100上执行hdfs namenode -format -clusterId mycluster   在host100上分别执行hadoop-daemon.sh start namenode         【格式化时,如果不带-clusterId参数,表示这2个namenode是2个独立的nameservice,单不属于同一个federation】         【格式化时,如果带-clusterId参数,表示这2个namenode是2个独立的nameservice,可以组成同一个federation】         (5)启动datanode   在crxy99上分别执行hadoop-daemons.sh start datanode               (6)初始化目录      执行hdfs dfs -mkdir hdfs://host99:9000/c99      执行hdfs dfs -mkdir hdfs://host100:9000/c100                      只有初始化目录之后,才能使用该联盟。 五:垃圾回收站:删除的文件会被扔到这里user/.Trash下,需要在配置文件里value是时间,当超过这个时间,就会被彻底删除core-site.xml,增加如下内容<property>   <name>fs.trash.interval</name>   <value>1440</value></property> 补充 简单介绍hadoop 及为分布搭建hadoop历史:雏形是02年Apache的Nutch全文搜索和web爬虫项目;03年谷歌发表论文GFS(google filesystem)o4年Nutch创始人DougCutting基于Google的GFS论文实现了分布式文件存储系统NDFS04年Google又发表了一篇技术学术论文MapReduce。         MapReduce是一种编程模型,用于分析运算。05年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能06年Yahoo雇用了DougCutting,NDFS和MapReduce升级命名为Hadoop hadoop核心hdfs和mapreduce,Hadoop旗下的很多项目比如hbase,hive等都是基于hdfs和mapreduce发展出来的 hdfs:         1.对于处理大数据文件,hdfs将文件平均分块存储到不同的机器上。         这样读取文件时可以同时读取多个主机不同的区块的文件,高效       2.流式数据访问,一次写入多次读写,不支持动态改变文件内容,         3.为了防止主机故障,找不到该主机的文件,hdfs将文件块副本复制到其他主机上         hdfs关键元素:                      Block:将一个文件分块,通常是64M                   namenode:保存整个文件的系统目录信息,文件信息和分块信息,                   datanode:存储真实数据block块 mapreduce:是一个从海量数据源提取分析元素后返回结果集的编程模型。            将大的数据分成小块逐个分析,再将提取出来的数据汇总分析。 hadoop体系:         核心:hdfs 分布式文件系统               mapreduce大规模数据编程模型                                     存储:hive 数据仓库架构                                     hbase分布,面向列nosql                                     cassandra混合型nosql                    数据:                             处理:chukwa 数据收集系统                                     pig数据分析平台                                     avro数据序列化系统      辅助项目:                mahout 数据检索                                     hama大规模并行计算                                                协调: core/common                             zookeper分布式协调服务                    官网hadoop介绍: Hadoop Common: The common utilities thatsupport the other Hadoop modules.                   支持Hadoop其他模块的通用工具Hadoop Distributed File System (HDFS): Adistributed file system that provides high-throughput access to applicationdata.                   提供高吞吐量应用程序数据访问的分布式文件系统Hadoop YARN: A framework for job schedulingand cluster resource management.                   作业调度和集群资源管理框架Hadoop MapReduce: A YARN-based system forparallel processing of large data sets.                   基于YARN的大数据并行处理系统 MRv1JobTracker 负责资源调度和应用管理globalTaskTracker                         per-node MRv2ResourceManager 负责资源调度   globalApplicationMaster 负责应用管理per-application NodeManger per-node 总结: hadoop2包括hdfs、yarn、mapreduce hdfs做分布式存储的,是主从式结构(存数文件类似mysql数据库)        namenode保存namespace         datanode保存数据 yarn做资源的管理和调度,是主从式结构(负责分配程序运行时需要的资源内存和cpu,例如tomcat)        resourcemanager负责全局资源的管理和调度         nodemanager负责单节点资源的管理 mapreduce分布式的计算模型,是主从式结构(处理存储在hdfs中数据的代码程序例如Java程序)         MRAppMaster         Task           hadoop伪分布搭建:1.安装VMware2.安装 centos3.配置网络(nat模式)4.安装jdk并配置环境变量5.关闭防火墙 serviceiptables stop            chkconfig iptables off6.该主机名:vi/etc/sysconfig/network   HOSTNAME=主机名             vi /etc/hosts192.168.1.100 主机名 7.设置免密码登录:ls ~/.ssh/ 什么也没有                   ssh主机名 密码登录之后ls~/.ssh/多个known_hosts文件                   ssh-keygen-t rsa 产生密钥ls ~/.ssh/ 展示多两个文件id_rsaid_rsa.pub                            利用算法将密码产生 密匙                   cpid_rsa.pub .复制到同一目录 8.解压hadoop9.配置环境变量10.修改配置文件hadoop-env.sh;yarn-env.sh;core-site.xml;hdfs-site.xml;yarn-site.xml;mapred-site.xml,slaves; log4j.properties         修改的 主要是主机名和环境变量11.格式化 bin/hdfsnamenode-format12.启动:start-all.sh13.jps如果有5个hadoop下的进程就成功,也可以在浏览器查看14.关闭hadoop :stop-all.sh

pergrand 发表于 2016-7-9 23:42:36

2. 修改配置文件 zookeeper/conf/zoo.cfg
修改存储路径dataDIr
在最后添加server.99=host99:2888:3888
server.100=host100:2888:3888
server.101=host101:2888:3888
在刚才设置的dataDir属性对应的目录下创建文件vi myid 给节点起一个编号,编号的值就是server.后面的数字例如在myid 中写入99
3. 复制zookeeper 到其他节点(host100,host101)上
scp -rp zookeeper host100:/usr/local 修改myid 100
scp -rp zookeeper host101:/usr/local修改myid 101

pergrand 发表于 2016-7-9 23:44:59

作记录时,没修改,能看明白就行,搭建集群时弄三个节点,每个节点的主机名分别是host99,host100,host101,有的地方没修改过来。

nxu_jsjx 发表于 2016-7-10 06:34:04

谢谢楼主分享

xw2016 发表于 2016-7-10 17:16:14

顶一下
页: [1]
查看完整版本: Hadoop学习之环境搭建