yp1234 发表于 2018-10-29 09:01:09

hadoop的高可用

  hadoopHA
  数据类型
  结构化数据RDMS
  非结构化数据借助算法goole pagerank
  半结构算法xmljson通过标签进行。
  一般情况下可以通过并行处理机制提高处理数据效率但是对于海量数据的加载是很慢的所以需要使用分布式文件系统只需要从本地磁盘上加载就好了所以速度很快。
  hadoop集群mapreduce框架其函数要自己写。
  在hadoopHA 集群中,通常有两台不同的机器充当 NameNode。在任何时间,只有一台机器处于Active 状态;另一台机器是处于 Standby 状态。
  在本片文档中主要体现两个高可用
  hdfs和yarn
  hdfs是
  在本文档中
  server1server5作为NN和RMserver2,server3,server4作为DNZK和DN.
  本篇文档从zookeeper开始关于基础配置请参考http://12237658.blog.51cto.com
  本实验出现的错误事项
  1、内存划分要足够本次一共启用5个虚拟机server1和server5要求大于1Gserver2,3,4不能小于768.
  2、再格式化过程中第一次格式化需要先启动日志进程sbin/hadoop.daem.sh start journalnode
  $ sbin/hadoop-daemon.sh start journalnode
  3、再启动过程中,zookeeper会发生服务提不起来的情况在此情况下一般是myid的错误或者端口被占用
  4、在启动hdfs服务时可能出现namenode 或datanode不出现的情况此时一般要查看日志信息根据日志信息作出更改
  5、服务尽量不要多次重复充起因为会导致进程混乱例如zookeeper的进程号和其文件中进程号不一致。$ cat zookeeper_server.pid 1236
  zookeeper的启动
  下载tar包解压到hadoop的家目录
  $ ls
  hadoop      java         zookeeper      zookeeper-3.4.9.tar.gz
  hadoop-2.7.3jdk1.7.0_79zookeeper-3.4.9
  修改配置文件
  $ cat zoo.cfg
  # The number of milliseconds of each tick
  tickTime=2000//ZK中的一个时间单元zk中所有时间都是以这个时间为基础以毫秒计用来调节心跳和超时。
  # The number of ticks that the initial
  # synchronization phase can take
  initLimit=10//Follower 在启动过程中,会从 Leader 同步所有最新数据,然后确定自己能够对外服务的起始状态。
  # The number of ticks that can pass between
  # sending a request and getting an acknowledgement
  syncLimit=5//在运行过程中,Leader 负责与 ZK 集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。
  # the directory where the snapshot is stored.
  # do not use /tmp for storage, /tmp here is just
  # example sakes.
  dataDir=/tmp/zookeeper   //存储快照文件 snapshot 的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数 dataLogDir, 事务日志的写性能直接影响 zk 性能。在生产环境中该目录应该为一个稳定的目录而不应该是在tmp下因为tmp在一定时间后会被清除。
  # the port at which the clients will connect
  clientPort=2181   //客户端连接 server 的端口,即对外服务端口
  # the maximum number of client connections.
  # increase this if you need to handle more clients
  #maxClientCnxns=60
  #
  # Be sure to read the maintenance section of the
  # administrator guide before turning on autopurge.
  #
  # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  #
  # The number of snapshots to retain in dataDir
  #autopurge.snapRetainCount=3
  # Purge task interval in hours
  # Set to "0" to disable auto purge feature
  #autopurge.purgeInterval=1
  server.1=172.25.33.2:2888:3888
  server.2=172.25.33.3:2888:3888
  server.3=172.25.33.4:2888:3888
  server的编号应该和myid的数字一致myid在dataDir下。
  echo “1”> /tmp/zookeeper/myid ....
  启动zookeeper//2,3,4启动。
  $ echo "2" > /tmp/zookeeper/myid
  $ bin/zkServer.sh start
  ZooKeeper JMX enabled by default
  Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
  Starting zookeeper ... STARTED
  $ bin/zkServer.sh status
  ZooKeeper JMX enabled by default
  Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
  Mode: follower
  配置hadoop的hdfs
  cat core-site.xml
  
  
  fs.defaultFS
  hdfs://master
  
  
  ha.zookeeper.quorum
  172.25.33.2:2181,172.25.33.3:2181,172.25.33.3:2181,172.25.33.4:2181
  
  
  cat hdfs-site.xml
  
  dfs.nameservices
  masters
  
  
  
  dfs.ha.namenodes.masters
  h1,h2
  
  
  
  dfs.namenode.rpc-address.masters.h1
  172.25.33.1:9000
  
  
  
  dfs.namenode.http-address.masters.h1
  172.25.33.1:50070
  
  
  
  dfs.namenode.rpc-address.masters.h2
  172.25.33.5:9000
  
  
  
  dfs.namenode.http-address.masters.h2
  172.25.33.5:50070
  
  
  
  dfs.namenode.shared.edits.dir
  qjournal://172.25.33.2:8485;172.25.33.3:8485;172.25.33.4:8485/masters
  
  
  
  dfs.journalnode.edits.dir
  /tmp/journaldata
  
  
  
  dfs.ha.automatic-failover.enabled
  true
  
  
  
  dfs.client.failover.proxy.provider.masters
  org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
  
  
  
  dfs.ha.fencing.methods
  
  sshfence
  shell(/bin/true)
  
  
  
  
  dfs.ha.fencing.ssh.private-key-files
  /home/hadoop/.ssh/id_rsa
  
  
  
  dfs.ha.fencing.ssh.connect-timeout
  30000
  
  
  $ cat slaves
  172.25.33.3
  172.25.33.4
  172.25.33.2
  至此hdfs的高可用配置文件已经完成
  在格式化hdfs之前要先将server2,3,4节点的journal服务打开因为hdfs在格式化的时候要与2,3,4的8485端口通信。
  $ sbin/hadoop-daemon.sh start journalnode
  starting journalnode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-journalnode-server2.example.com.out
  $ jps
  2629 JournalNode
  2398 QuorumPeerMain
  2667 Jps
  在这三个节点看到该jps进程那么说明可以格式化Hdfs了
  $ bin/hdfs namenode -format
  $ scp -r /tmp/hadoop-hadoop/ 172.25.33.5:/tmp
  fsimage_0000000000000000000                  100%353   0.3KB/s   00:00
  fsimage_0000000000000000000.md5            100%   62   0.1KB/s   00:00
  seen_txid                                    100%    2   0.0KB/s   00:00
  VERSION
  格式化zookeeper(只需在h1上执行)
  $ bin/hdfs zkfc -formatZK
  然后就可以启动服务了。
  此时需要免密码认证所以该制作ssh-keygen的赶紧制作。有时需要用ssh试连各个节点破除yes
  $ sbin/start-dfs.sh
  检测$ jps
  11212 DFSZKFailoverController
  11482 Jps
  10883 NameNode
  通过网页的50070访问正常
  172.25.33.150070
http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  $ jps
  11212 DFSZKFailoverController
  11482 Jps
  10883 NameNode
  $ kill -9 10883
  172.25.33.550070
http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  验证成功hdfs的高可用已经完成下边配置yarn的高可用
  Apache Hadoop YARN Yet Another Resource Negotiator另一种资源协调者是一种新的 Hadoop 资源管理器它是一个通用资源管理系统可为上层应用提供统一的资源管理和调度它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处
  cat mapred-site.xml
  
  
  
  mapreduce.framework.name
  yarn
  
  
  cat yarn-site.xml
  
  
  
  
  yarn.nodemanager.aux-services
  mapreduce_shuffle
  
  
  
  yarn.resourcemanager.ha.enabled
  true
  
  
  
  yarn.resourcemanager.cluster-id
  RM_CLUSTER
  
  
  yarn.resourcemanager.ha.rm-ids
  rm1,rm2
  
  
  
  yarn.resourcemanager.hostname.rm1
  172.25.33.1
  
  
  
  yarn.resourcemanager.hostname.rm2
  172.25.33.5
  
  
  
  yarn.resourcemanager.recovery.enabled
  true
  
  
  
  yarn.resourcemanager.store.class
  org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
  
  
  
  yarn.resourcemanager.zk-address
  172.25.33.2:2181,172.25.33.3:2181,172.25.33.4:2181
  
  
  配置文件完成后启动yarn服务。
  $ sbin/start-yarn.sh
  $ jps
  13244 ResourceManager
  11212 DFSZKFailoverController
  13330 Jps
  12814 NameNode
  $ jps
  1598 NameNode
  1904 Jps
  1695 DFSZKFailoverController
  在另一个节点上并没有RM,需要手动启动
  $ sbin/yarn-daemon.sh start resourcemanager
  starting resourcemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-server5.example.com.out
  $ jps
  1598 NameNode
  2018 Jps
  1695 DFSZKFailoverController
  1979 ResourceManager
  172.25.33.18088
http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  故障切换
  $ jps
  13244 ResourceManager
  11212 DFSZKFailoverController
  12814 NameNode
  13923 Jps
  $ kill -9 13244
  172.25.33.58088
http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  使用zookeeper的命令行进行测试
  $ bin/zkCli.sh -server 127.0.0.1:2181
   get /yarn-leader-election/RM_CLUSTER/ActiveBreadCrumb
  RM_CLUSTERrm2
  cZxid = 0x100000020
  ctime = Tue Mar 07 22:05:16 CST 2017
  mZxid = 0x100000053
  mtime = Tue Mar 07 22:09:58 CST 2017
  pZxid = 0x100000020
  cversion = 0
  dataVersion = 1
  aclVersion = 0
  ephemeralOwner = 0x0
  dataLength = 17
  numChildren = 0
   quit
  Quitting...
  结束5上的服务RM会切换到1上。
  ActiveBreadCrumb         ActiveStandbyElectorLock
   get /yarn-leader-election/RM_CLUSTER/ActiveBreadCrumb
  RM_CLUSTERrm1
  cZxid = 0x100000020
  ctime = Tue Mar 07 22:05:16 CST 2017
  mZxid = 0x10000008b
  mtime = Tue Mar 07 22:15:14 CST 2017
  pZxid = 0x100000020
  cversion = 0
  dataVersion = 2
  aclVersion = 0
  ephemeralOwner = 0x0
  dataLength = 17
  numChildren = 0
  
  测试成功表示yarn的高可用已经完成。

页: [1]
查看完整版本: hadoop的高可用