Hadoop运维手记

1.处理hadoop的namenode宕机
  处理措施:进入hadoop的bin目录,重启namenode服务
  操作命令:cd path/to/hadoop/bin   ./hadoop-daemon.sh start namenode
2.处理hadoop的jobtacker宕机
  处理措施:进入hadoop的bin目录,重启jobtacker服务
  操作命令:cd path/to/hadoop/bin  ./hadoop-daemon.sh start jobtracker
3. 处理hadoop的datanode宕机
  处理措施:进入hadoop的bin目录,重启datanode服务
  操作命令:cd path/to/hadoop/bin  ./hadoop-daemon.sh start datanode
4. 处理hadoop的tasktracker宕机
  处理措施:进入hadoop的bin目录,重启tasktacker服务
  操作命令:cd path/to/hadoop/bin  ./hadoop-daemon.sh start tasktracker
5. 启动hadoop集群
  处理措施:进入hadoop的bin目录,执行start-all.sh脚本
  操作命令:cd path/to/hadoop/bin  ./start-all.sh
  注意事项:
namenode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1- dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。 dfs.safemode.threshold.pct(缺省值0.999f)表示hdfs启动的时候,如果datanode上报的block个数达到了 元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则hdfs永远是处于safemode。
有两个方法离开这种安全模式
(1)修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。
(2)hadoop dfsadmin -safemode leave命令强制离开
用户可以通过hadoop dfsadmin -safemode $value来操作安全模式,参数$value的说明如下:
  enter – 进入安全模式
  leave – 强制namenode离开安全模式
  get – 返回安全模式是否开启的信息
  wait – 等待,一直到安全模式结束。
6. 关闭hadoop集群
  处理措施:进入hadoop的bin目录,执行stop-all.sh脚本
  操作命令:cd path/to/hadoop/bin  ./ stop-all.sh
7. 从hadoop移除机器
  处理措施:把需要移除的机器增加到exclueds文件中,强制刷新datanode列表,等待decommission 状态正常后,即可停机下架,如有必要在namenode执行balancer操作。
  操作命令:在master的conf/hdfs-site.xml中加入

<property>
<name>dfs.hosts.exclude</name>
<value>excludes</value>
</property>

在$hadoop_home下创建exclueds文件
文件内容增加你想删除的节点的机器名,一行一个
/bin/hadoop dfsadmin -refreshnodes命令刷新datanode例表
/bin/hadoop dfsadmin -report查看结果

datanodes available: 1 (1 total, 0 dead)

name: 192.168.200.118:50010
decommission status : decommission in progress
configured capacity: 211370565632 (196.85 gb)
dfs used: 11459694592 (10.67 gb)
non dfs used: 187135799296 (174.28 gb)
dfs remaining: 12775071744(11.9 gb)
dfs used%: 5.42%
dfs remaining%: 6.04%
last contact: wed feb 22 23:51:48 pst 2015

在decommission status : decommission in progress变为 decommission status : decommission normal前mapreduce会异常增加节点
8. 向hadoop添加机器
  处理措施:把新机器的增加到conf/slaves文件中,重启datanode和jobtracker进程,当新添加的机器向namenode发送心跳信息后,namenode会自动感知新加入的机器,如果有必要可以做balancer操作。
  操作命令:
1.把新机器的增加到conf/slaves文件中(datanode或者tasktracker crash则可跳过)
2.在新机器上进入hadoop安装目录
  $bin/hadoop-daemon.sh start datanode
  $bin/hadoop-daemon.sh start tasktracker
3.在namenode上
  $bin/hadoop balancer
9. 杀死正在运行的job
  操作命令:bin/hadoop job –kill {job-id}
10.处理hbase的master宕机
  操作命令:./hbase-daemon.sh start master    ./hbase-daemon.sh start zookeeper//可选
11.处理hbase的regionserver宕机
  操作命令:./hbase-daemon.sh start regionserver  ./hbase-deamon.sh start zookeeper//可选
12.hbase集群间数据迁移方法总结
一、需要在hbase集群停掉的情况下迁移
步骤:
(1)执行hadoop distcp -f filelist "hdfs://new cluster ip:9000/hbasetest"
(2)在new cluster执行./hbase org.jruby.main add_table.rb /hbase/table20111222,将拷贝来的表加入到.meat.中(会出现region的数目不一致的问题,这个需要重启hase才能解决)
说明:(1)filelist为hdfs上的列表文件,内容如下:
/hbase/table20111222
/hbase/table20120131
(2)如果两个集群的hadoop版本不一致,需要在new cluster上执行hadoop distcp,否则会出现读写异常;
二、在集群运行的时候进行数据迁移
1、replication:这个是动态的备份(可以理解为实时备份)
步骤:(1)在old cluster将需要迁移的表属性进行修改:
disable ‘your_table‘
alter ‘your_table‘, {name => ‘family_name‘, replication_scope => ‘1‘}
enable ‘your_table‘
(2)打开new cluster集群的replication,修改hbase-site.xml
<property>
<name>hbase.replication</name>
<value>true</value>
</property>
(3)添加peer,在new cluster的hbase shell中执行:add_peer ‘1‘,‘old cluster ip:2181:/hbase‘,启动replication,执行start_replication
说明:需要两个集群的hadoop版本一致,否则出现读写错误

2、copytable:可以在本集群中拷贝一张表,也可以将表拷贝到其他的集群中。
命令:./hbase org.apache.hadoop.hbase.mapreduce.copytable --peer.adr=new cluster ip:2181:/hbase zy_test
说明:(1)拷贝完成,不需要重启机器,在new cluster中就可以看到该表;
(2)稳定性还需要考虑,测试过程中遇到一个问题
此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com
,拷贝过程中始终都停留在这里lookedup root region location, 查看日志没有什么错误和相关的信息。

3、export and import
步骤:(1)在old cluster上执行:./hbase org.apache.hadoop.hbase.mapreduce.export test hdfs://new cluster ip:9000/zhuangyang/test
(2)在new cluster上执行:./hbase org.apache.hadoop.hbase.mapreduce.import test hdfs://new cluster ip:9000/zhuangyang/test
说明:(1)一定要写全路径,不能写相对路劲;
(2)在import前,需要将表事先在new cluster中创建好.

以上都是在old cluster和new cluster网络相通的情况下实现数据迁移的办法。
如果两个集群网络不通,只能先将old cluster中的数据都下载到本地或者其他的地方,然后在人工的转移到new cluster上了

13.不重启namenode可以使配置文件生效
  hadoop dfsadmin -refreshnodes

时间: 2024-09-30 18:39:20

Hadoop运维手记的相关文章

Hadoop运维记录系列(二十三)

最近做集群机房迁移,在旧机房和新机房之间接了根专线,做集群不停机搬迁,也就是跨机房,同时要新加百多台服务器,遇到几个问题,记录一下. 旧集群的机器是centos 6, 新机房加的机器是centos 7. 一.丢包问题 在跨机房的时候,datanode显示很多Slow BlockReceiver的日志 WARN  org.apache.hadoop.hdfs.server.datanode.DataNode: Slow BlockReceiver write packet to mirror to

Hadoop运维记录系列(十六)

应了一个国内某电信运营商集群恢复的事,集群故障很严重,做了HA的集群Namenode挂掉了.具体过程不详,但是从受害者的只言片语中大概回顾一下历史的片段. Active的namenode元数据硬盘满了,满了,满了...上来第一句话就如雷贯耳. 运维人员发现硬盘满了以后执行了对active namenode的元数据日志执行了 echo "" > edit_xxxx-xxxx...第二句话如五雷轰顶. 然后发现standby没法切换,切换也没用,因为standby的元数据和日志是5月

Hadoop运维记录系列(十四)

周末去了趟外地,受托给某省移动公司做了一下Hadoop集群故障分析和性能调优,把一些问题点记录下来. 该系统用于运营商的信令数据,大约每天1T多数据量,20台Hadoop服务器,赞叹一下运营商乃真土豪,256G内存,32核CPU,却挂了6块2T硬盘.还有10台左右的服务器是64G内存,32核CPU,4~6块硬盘,据用户反馈,跑数据很慢,而且会有失败,重跑一下就好了. 软件环境是RedHat 6.2,CDH Hadoop 4.2.1. 总容量260多TB,已使用200多T. 首先,这硬件配置属于倒

Hadoop运维记录系列(二十四)

从这篇开始记录一下集群迁移的事情 早先因为机房没地方,就已经开始规划集群搬机房的事情,最近终于开始动手了,我会把这次不停机迁移的过程遇到的主要问题和矛盾以及各种解决方法记录下来. 集群规模说大不大,几百台,总容量30PB左右.Hadoop使用CDH 5.5.1加一些自定义patch的rpm打包编译版本. 总的方案是集群不停机,在两个机房之间架设专线,旧机房decommission,拉到新机房recommission.每天不能下线太多机器,要保证计算. 新机房提前架设90台机器,测试带宽.带宽的测

Hadoop运维记录系列(十五)

早期搭建Hadoop集群的时候,在做主机和IP解析的时候,通常的做法是写hosts文件,但是Hadoop集群大了以后做hosts文件很麻烦,每次加新的服务器都需要整个集群重新同步一次hosts文件,另外,如果在同一个域下面做两个集群,做distcp,也需要把两个集群的hosts文件全写完整并完全同步,很麻烦.那么,一劳永逸的办法就是做DNS.DNS我这边已经用了很长时间了,几年前为了学这个还专门买了一本巨厚的BIND手册. 做DNS服务器最常用的就是BIND,ISC开发并维护的开源系统. 以ce

hadoop运维案例分享

1.Namenode岩机处理:重启集群无法恢复的情况下 一般NameNode情况下是不会岩机的,但如果出现违规操作,如突然断电等就会造成NameNode镜像文件的损坏,重启就起不来了.hdoop1的一个设计不好的地方就是单机依赖,对NameNode这台机器依赖太高,一旦NameNode出现岩机整个集群就会瘫了! 注:NameNode镜像文件盒secondnamenode镜像存放在哪里是有配置文件决定的 首先删除掉NameNode下的镜像文件 复制namesecondary文件中的所有内容到Nam

Hadoop 运维(1)NoRouteToHostException: No route to host

当用户上传数据到HDFS上时经常会出现这个错误 hdfs.DFSClient:Exception in createBlockOutputStream java.net.NoRouteToHostException:No route to host 这种情况网上的解决办法 通常是告诉要关闭防火墙,至于 关于哪台主机 的防火墙并没提. 查看日志文件,只说是No route to host没有提端口的事,解决方案是所有主机的关闭防火墙,namenode和slave节点都要关闭.如果 只关闭namen

Hadoop运维记录系列(二十一)

Zeppelin启用https过程和Hack内核以满足客户需求的记录. 原因是这客户很有意思,该客户中国分公司的人为了验证内网安全性,从国外找了一个渗透测试小组对Zeppelin和其他产品进行黑客测试,结果发现Zeppelin主要俩问题,一个是在内网没用https,一个是zeppelin里面可以执行shell命令和python语句.其实这不算大问题,zeppelin本来就是干这个用的.但是渗透小组不了解zeppelin是做什么的,认为即使在内网里,执行shell命令能查看操作系统的一些文件是大问

运维工作解释

2017/3/9 PC小记:<运维之下>的文档作者对运维工作的解释清晰明了,有利于工作的划分和职业的规划,因而值得整理后分享. https://github.com/opera443399/ops/tree/master/doc/ARCHITECTURE/ops [Q]:如何开展运维工程师的工作? A:推荐<运维之下> ---------------- [运维工作解释] ---------------- 第一章:互联网运维工作 http://mp.weixin.qq.com/s?_