分享

Hadoop学习之环境搭建

四:环境搭建
ClientProtocol是客户端(FileSystem)NameNode通信的接口
DatanodeProtocolDataNodeNameNode通信的接口
NamenodeProtocol  SecondaryNameNodeNameNode通信的接口。

HA集群图解
ZK :zookeeper
JN :JournalNode
NN :Namenode
DN :datanode
NN

1.png

为什么使用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 NNstandby NN同步。
   配置HA的时候,不用配置SecondaryNameNodeSecondaryNameNode的职责由standbyNN完成。
   HA中的2NameNode属于同一个命名空间。
   
   实验环境如下:
  host99        namenodedatanodenodemanagerjournalnode
  host100      namenoderesourcemanagerdatanodenodemanagerjournalnode
  host101      datanodenodemanagerjournalnode
   
   执行步骤:
         (1)创建快照
         (2)关闭集群,确保hadoop的各个进程不存在;
      删除host99host100host101hadoop_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        namenodedatanodenodemanagerjournalnodezookeeper
  host100      namenoderesourcemanagerdatanodenodemanagerjournalnodezookeeper
  host101      datanodenodemanagerjournalnodezookeeper
   执行步骤:
         (1)host99host100host101上搭建zookeeper集群,启动zk集群
         (2)关闭hadoop集群,确保hadoop的各个进程不存在;
      删除host99host100host101hadoop_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进程的host99host100启动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:3888
server.100=host99:2888:3888
server.101=host99:2888:3888
在刚才设置的dataDir属性对应的目录下创建文件vi myid 给节点起一个编号,编号的值就是server.后面的数字例如在myid 中写入99
3. 复制zookeeper 到其他节点(host100,host101)上
scp -rp zookeeper host99:/usr/local 修改myid 100
scp -rp zookeeper host99:/usr/local修改myid 101
4. 启动zookeeper 在三个节点上都启动
zookeeper/bin/zkServer.sh start
查看状态
zookeeper/bin/zkServer.sh status
hadoop伪分布集群很简单主要是个配置文件的配置在后面有具体步骤
            3.png

联盟集群环境:可以有多个命名空间:例如上图的/share//user/实际应用中例如电信公司用户的信息,北京用户的信息通过/share/ 这个命名空间进行底层数据访问,上海用户的信息可以通过/user/这个命名空间访问;每个命名空间下又是HA集群
1. 配置federation
  federation指的是有2个命名空间存在。每个命名空间可以单独部署ha
   
   实验环境如下:
  host99        namenodedatanodenodemanager
  host100      namenoderesourcemanagerdatanodenodemanager
  host101      datanodenodemanager
   执行步骤:
         (1)创建快照
         (2)关闭集群,确保hadoop的各个进程不存在;
      删除host99host100host101hadoop_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参数,表示这2namenode2个独立的nameservice,单不属于同一个federation
           【格式化时,如果带-clusterId参数,  表示这2namenode2个独立的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历史:
雏形是02ApacheNutch全文搜索和web爬虫项目;
03年谷歌发表论文GFSgoogle filesystem
o4Nutch创始人DougCutting基于GoogleGFS论文实现了分布式文件存储系统NDFS
04Google又发表了一篇技术学术论文MapReduce
         MapReduce是一种编程模型,用于分析运算。
05Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能
06Yahoo雇用了DougCuttingNDFSMapReduce升级命名为Hadoop
hadoop核心
hdfsmapreduceHadoop旗下的很多项目比如hbasehive等都是基于hdfsmapreduce发展出来的
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的大数据并行处理系统
MRv1  
JobTracker 负责资源调度和应用管理  global
TaskTracker                         per-node
MRv2
ResourceManager 负责资源调度   global
ApplicationMaster 负责应用管理  per-application
NodeManger per-node
总结:
hadoop2包括hdfsyarnmapreduce
hdfs做分布式存储的,是主从式结构(存数文件类似mysql数据库)
       namenode保存namespace
         datanode保存数据
yarn做资源的管理和调度,是主从式结构(负责分配程序运行时需要的资源内存和cpu,例如tomcat)
       resourcemanager负责全局资源的管理和调度
         nodemanager负责单节点资源的管理
mapreduce分布式的计算模型,是主从式结构(处理存储在hdfs中数据的代码程序例如Java程序)
         MRAppMaster
         Task
         
hadoop伪分布搭建:
1.安装VMware
2.安装 centos
3.配置网络(nat模式)
4.安装jdk并配置环境变量
5.关闭防火墙 serviceiptables stop
              chkconfig iptables off
6.该主机名:vi/etc/sysconfig/network   HOSTNAME=主机名
             vi /etc/hosts  192.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.解压hadoop
9.配置环境变量
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-format
12.启动:start-all.sh
13.jps如果有5hadoop下的进程就成功,也可以在浏览器查看
14.关闭hadoop :stop-all.sh

已有(4)人评论

跳转到指定楼层
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
谢谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条