• hadoop HA部署(NFS方案)


    第二步,部署好NFS,这个网上也有很多。
    http://blog.sina.com.cn/s/blog_542627730100ipi5.html 我主要参考这个,下面是粘贴

    引用

    一、Linux 服务器端NFS 服务器的配置
      以root 身份登陆Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。
      执行如下命令编辑文件/etc/exports:
      # vi /etc/exports
      在该文件里添加如下内容:
      /home/work 192.168.0.*(rw,sync,no_root_squash)
      然后保存退出。
      添加的内容表示:允许ip 地址范围在192.168.0.*的计算机以读写的权限来访问/home/work 目录。
      /home/work 也称为服务器输出共享目录。
      括号内的参数意义描述如下:
      rw:读/写权限,只读权限的参数为ro;
      sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。
      no_root_squash:NFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。
      接着执行如下命令,启动端口映射:
      # /etc/rc.d/init.d/portmap start
      最后执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求:
      # /etc/rc.d/init.d/nfs start
    #exportfs -rv (这句必须执行)
      用户也可以重新启动Linux 服务器,自动启动NFS 服务。
      在NFS 服务器启动后,还需要检查Linux 服务器的防火墙等设置(一般需要关闭防火墙服务),确保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptables,ipchains 等选项的设置,以及/etc/hosts.deny,/etc/hosts.allow 文件。
      我们首先在Linux 服务器上进行NFS 服务器的回环测试,验证共享目录是否能够被访问。在Linux 服务器上运行如下命令:
      # mount –t nfs 192.168.0.20:/home/work /mnt
      # ls /mnt   命令将Linux 服务器的NFS 输出共享目录挂载到/mnt 目录下,因此,如果NFS 正常工作,应该能够在/mnt 目录看到/home/work 共享目录中的内容。

    在客户机进行上如下操作:

    # mkdir /mnt/nfs //建立Linux 服务器输出共享目录的挂载点;
      # mount –t nfs 192.168.0.20:/home/work /mnt/nfs –o nolock
      # cd /mnt/nfs
      # ls
    在开发过程中,来回输入命令非常烦人,我写了两个简单的脚本来完成nfs的启动,挂载。
      host启动nfs:
      snfs
      #!/bin/bash
      ifconfig eth0 192.168.0.20
      /etc/rc.d/init.d/portmap start
      /etc/rc.d/init.d/nfs start
      目标机挂载nfs:
      mnfs:
      #!/bin/sh
      mount -t nfs 192.168.0.20:/home/work/nfs /mnt/nfs -o nolock
      echo “nfs ok!”

    也可以配置/etc/fstab:

    #vi /etc/fstab
    加入以下内容
    192.168 . 0.203 :/home/cqxs3/data /home/cqxs3/data nfs defaults

    第三步,配置hadoop HA,基本上一路顺利,按照官方文档弄就行:http://hadoop.apache.org/docs/r2.0.0-alpha/hadoop-yarn/hadoop-yarn-site/HDFSHighAvailability.html
    1,保证两个namenode硬件配置相同,或者都能胜任工作吧;
    2,保证两个namenode都挂载了nfs同一块区域吧。
    3,保证两个namenode可以互相免密码ssh,namenode运行的进程。
    4,保证两个NameNode的dfs.namenode.name.dir路径下内容相同;
    5,保证dfs.namenode.shared.edits.dir路径下有current/edit_*文件
    6,可以启动啦,在namenode上执行start-dfs.sh,可以jps查进程、访问namenode的web、以及看日志确认namenode是否成功启动了。
    7,启动datanode (因为我开了security模式,所以datanode要单独在root下启动)
    8,启动之后,两个namenode都在standby模式,在namenode上执行hdfs dfs -haadmin failover nn2 nn1 就行啦。
    9,没有了,一切静待运行几天。

    10,补充下,hadoop 的client也做的ha重试机制,所以client知道去哪里找namenode。
    11,再补充一下,两个namenode机器上运行namenode进程的用户(我这里是hdfs)的uid要相同,要不然无法对nfs中的数据拥有相同的权限。

    最后,附上我的配置文件

    Core-site.xml代码 [这里是图片001]

    1. fs.defaultFS

    2. hdfs://hadoopii

    3. fs.trash.interval

    4. 1440

    Hdfs-site.xml代码 [这里是图片002]

    1. dfs.federation.nameservices

    2. hadoopii

    3. dfs.permissions.superusergroup

    4. hadoop

    5. dfs.namenode.name.dir

    6. /data/NameNode

    7. dfs.datanode.data.dir

    8. /data/DataNode

    9. dfs.replication

    10. 2

    11. dfs.datanode.max.xcievers

    12. 4096

    13. dfs.checksum.type

    14. CRC32

    15. dfs.ha.namenodes.hadoopii

    16. nn1,nn2

    17. dfs.namenode.rpc-address.hadoopii.nn1

    18. myhost20:54310

    19. dfs.namenode.rpc-address.hadoopii.nn2

    20. myhost-1:54310

    21. dfs.namenode.servicerpc-address.hadoopii.nn1

    22. myhost20:53310

    23. dfs.namenode.servicerpc-address.hadoopii.nn2

    24. myhost-1:53310

    25. dfs.namenode.http-address.hadoopii.nn1

    26. myhost20:50070

    27. dfs.namenode.http-address.hadoopii.nn2

    28. myhost-1:50070

    29. dfs.client.failover.proxy.provider.hadoopii

    30. org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

    31. dfs.namenode.shared.edits.dir

    32. file:///nfs_myhost0/hdfs/ha-name-dir-shared

    33. dfs.ha.fencing.methods

    34. sshfence

    35. dfs.ha.fencing.ssh.private-key-files

    36. /home/hdfs/.ssh/id_rsa

    37. dfs.ha.fencing.ssh.connect-timeout

    38. 5000

  • 相关阅读:
    Java--日志管理
    2.1配置(AutoMapper官方文档翻译)
    写论文时,不知道如何检验正态分布?
    kotlin 消除强制非空!!
    GO语言篇之交叉编译
    能被整除的数
    YUM仓库的档案控制
    1.5 空间中的平面与直线
    Tomcat
    JDBC中对象的解释和statement对象详解
  • 原文地址:https://blog.csdn.net/m0_67393342/article/details/126364985