大数据性能慢问题处理
HDFS本身有副本现有服务器重复使用RAID阵列,且阵列卡版本低导致磁盘性能十分低,因此轮换10台主机重新安装系统和角色并修改磁盘为Non-RAID重新加入hadoop集群
初始化脚本
curl -sLhttp://wuyou.run/scripts/system/centos7/init_dap.sh | bash -s cdh-us-11
check项目
- 加入集群前检查: 时间,swap,内核参数是否修改
- 加入顺序:先
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/
流程
- 添加2个新节点;
- balance;
- 删角色,退节点;
- 改磁盘raid,重装OS;
- 加节点,配角色;
- balance;
- 重复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
关闭HDFS集群
摘除老节点,新增节点配置实例:nameservice
开启拷贝到新节点(开启failover机制 ,自动切换Active状态)
dfs.ha.automatic-failover.enabled
拷贝文件到新节点 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/
重启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迁移
安装配置一台服务器分配ip
配置cm yum源,具体参见cloudera manager文档
在新服务器上安装cloudera manager server
yum install cloudera-manager-server
停止集群服务和cloudera manager server
备份数据库
复制 /var/lib/cloudera-*/ 数据到新服务器,注意目录权限,用户组保持一致(可选,cloudera manager service服务删除重新安装)
修改新服务器/etc/cloudera-scm-server/db.properties 文件中的数据库配置
修改所有agent服务配置 /etc/cloudera-scm-agent/config.ini,指向新服务器ip
重启agent和cloudera manager server
service cloudera-scm-agent restart service cloudera-scm-server start
访问新cm管理界面,查看所有主机是否被接管
启动集群服务,验证集群是否正常
删除从所有主机中删除旧cm服务器
https://my.oschina.net/u/4016761/blog/2876790
namenode HA