所有CDH节点轮换(RAID改为Non-RAID)
 

大数据性能慢问题处理

HDFS本身有副本现有服务器重复使用RAID阵列,且阵列卡版本低导致磁盘性能十分低,因此轮换10台主机重新安装系统和角色并修改磁盘为Non-RAID重新加入hadoop集群

初始化脚本

curl -sLhttp://wuyou.run/scripts/system/centos7/init_dap.sh | bash -s cdh-us-11

check项目

  1. 加入集群前检查: 时间,swap,内核参数是否修改
  2. 加入顺序:先Add hosts to Cloudera Manager ,然后Add hosts to cluster

磁盘

mkfs.ext4 /dev/sdb
mkfs.ext4 /dev/sdc
mkfs.ext4 /dev/sdd
fdisk /dev/sda
# p ,n

 rpm -q parted|| yum install parted
 partprobe
 mkfs.ext4 /dev/sda4

mkdir  /mnt/{sdb,sdc,sdd,sda4} -p

/etc/fstab

/dev/sda4   /mnt/sda4   ext4    defaults       1 2
/dev/sdb  /mnt/sdb   ext4    defaults       1 2
/dev/sdc  /mnt/sdc   ext4    defaults       1 2
/dev/sdd  /mnt/sdd   ext4    defaults       1 2

/etc/hosts

192.168.1.101 etl-us-1
192.168.1.102 etl-us-2
192.168.1.103 rpt-us-1
192.168.1.104 cdh-us-1
192.168.1.105 cdh-us-2
192.168.1.106 cdh-us-3
192.168.1.107 cdh-us-4
192.168.1.108 cdh-us-5
192.168.1.109 cdh-us-6
192.168.1.110 cdh-us-7
192.168.1.111 cdh-us-8
192.168.1.112 cdh-us-9
192.168.1.113 cdh-us-10
192.168.1.116 cdh-us-11
192.168.1.117 cdh-us-12

时区

timedatectl # 查看时区
timedatectl set-timezone   GMT

加入CM agent ((Add hosts to Cloudera Manager)

mkdir /opt/nfs
mount -t nfs -o rw,async,wsize=32768,rsize=32768  192.168.1.111:/root/cdh_repo  /opt/nfs
yum install /opt/nfs/cm6.3.1/RPMS/x86_64/{cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm,oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm,cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm}
# 手动挂载并yum安装cm客户端包

加入集群

加入集群后

mkdir  /mnt/{sdb,sdc,sdd,sda4}/dfs/dn -p
 chown -R hdfs:hadoop  /mnt/{sdb,sdc,sdd,sda4}/

添加datanode节点不要修改默认目录方式,这样方式导致我原来的HDFS数据都不显示了,虚惊一场。。。

错误示范

正确操作

在单个实例中配置,不影响全局的默认路径:/home/cloudera/dfs/dn/

流程

  1. 添加2个新节点;
  2. balance;
  3. 删角色,退节点;
  4. 改磁盘raid,重装OS;
  5. 加节点,配角色;
  6. balance;
  7. 重复3-6

dfs.datanode.balance.bandwidthPerSec=52428800,指定DataNode用于balancer的带宽为50MB, 这个参数要配置:指定 Balance 消耗的带宽

balance

命令: sudo -u hdfs hdfs balancer

默认会检查每个datanode的磁盘使用情况,对磁盘使用超过整个集群10%的datanode移动block到其他datanode达到均衡作用。

指定阀值,该阀值是datanode节点的磁盘使用占整个集群的百分比。 sudo -u hdfs hdfs balancer -threshold 5 #表示超过整个集群5%容量的节点进行均衡block

设置均衡的带宽,默认设置:1048576(1 M/S) 参数含义:设置balance工具在运行中所能占用的带宽,设置的过大可能会造成mapred运行缓慢

sudo -u hdfs hdfs dfsadmin -setBalancerBandwidth  104857600  #表示设置带宽可使用100Mb
sudo -u hdfs hdfs  balancer  -threshold 5 -include  cdh-us-11,cdh-us-12,cdh-us-13,cdh-us-14,cdh-us-6,cdh-us-9
# 指定节点做数据平衡:cdh-us-6,cdh-us-9为要淘汰节点,11-14为新加入节点
`

JournalNode 新增报错

/home/cloudera/dfs/jn
root scp -r nameservice1/  cdh-us-14:/home/cloudera/dfs/jn

CDH上Cloudera Management Service 各个角色迁移至其他节点

https://www.cnblogs.com/gxc2015/p/9273301.html

fsck命令(检查数据块是否健康)

hdfs$ hdfs  fsck /  -list-corruptfileblocks  -openforwrite -files -blocks -locations 2>&1 >/tmp/fsck.txt

查看文件目录的健康信息

执行如下的命令:

hdfs fsck /user/hadoop-twq/cmd

hdfs fsck /user/hadoop-twq/cmd -list-corruptfileblocks
# 损坏文件的处理


hdfs fsck /user/hadoop-twq/cmd -move
#将损坏的文件移动至/lost+found目录 (-move)


hdfs fsck /user/hadoop-twq/cmd -delete
# 删除有损坏数据块的文件 (-delete)

hdfs fsck /user/hadoop-twq/cmd -openforwrite
# 检查并打印正在被打开执行写操作的文件(-openforwrite)

检查并列出所有文件状态

hdfs fsck /user/hadoop-twq/cmd -files

打印文件的Block报告(-blocks)

hdfs fsck /user/hadoop-twq/cmd/big_file.txt -files -blocks

http://216.218.147.51:9870/dfshealth.html#tab-overview

namenode

新增namenode

  1. 关闭HDFS集群

  2. 摘除老节点,新增节点配置实例:nameservice

  1. 开启拷贝到新节点(开启failover机制 ,自动切换Active状态)

    dfs.ha.automatic-failover.enabled
    

  2. 拷贝文件到新节点 dfs.namenode.name.dir: 为定义的namenode数据目录

    node1#
    node1#ssh cdh-namenode-2-1  mkdir /home/cloudera/dfs/nn/current/ -p
    node1#scp   /home/cloudera/dfs/nn/current/*   cdh-namenode-2-1:/home/cloudera/dfs/nn/current/
    node2# chown   hdfs.hdfs  -R /home/cloudera/dfs/nn/current/
    
  3. 重启hdfs

HA架构 如果不拷贝文件新节点可以尝试初始化共享编辑目录

namenode节点更换需要刷新hive

对于每个 Hive 服务 Hive,停止 Hive 服务,将 Hive Metastore 数据库备份到永久性存储中,运行服务命令"更新 Hive Metastore NameNodes",然后重启 Hive 服务。

HDFS 和 YARN 的 HA 故障切换

https://blog.csdn.net/u011414200/article/details/50336735

Hadoop之NameNode Federation图文详解

http://www.cppcns.com/ruanjian/java/249728.html

balace节点

目录权限问题

mkdir /var/log/hadoop-hdfs
chown hdfs.hadoop /var/log/hadoop-hdfs

Cloudera Manager Server迁移

  1. 安装配置一台服务器分配ip

    1. 配置cm yum源,具体参见cloudera manager文档

    2. 在新服务器上安装cloudera manager server

      yum install cloudera-manager-server
      
    3. 停止集群服务和cloudera manager server

    4. 备份数据库

    5. 复制 /var/lib/cloudera-*/ 数据到新服务器,注意目录权限,用户组保持一致(可选,cloudera manager service服务删除重新安装)

    6. 修改新服务器/etc/cloudera-scm-server/db.properties 文件中的数据库配置

  2. 修改所有agent服务配置 /etc/cloudera-scm-agent/config.ini,指向新服务器ip

    1. 重启agent和cloudera manager server

        service cloudera-scm-agent restart
      
        service cloudera-scm-server start
      
    2. 访问新cm管理界面,查看所有主机是否被接管

    3. 启动集群服务,验证集群是否正常

    4. 删除从所有主机中删除旧cm服务器

https://my.oschina.net/u/4016761/blog/2876790

namenode HA


文章作者: 以谁为师
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源!

  目录