hadoop集群维护手册.docx
《hadoop集群维护手册.docx》由会员分享,可在线阅读,更多相关《hadoop集群维护手册.docx(8页珍藏版)》请在冰点文库上搜索。
hadoop集群维护手册
Hadoop部分
启动命令:
停止命令:
Hadoop运行
增加集群的存储量/节点
如果只增加集群的存储量,建议增加Hadoopdatanode节点。
步骤:
1、停掉集群包括Hadoop和hbase,当然也可以不停掉,直接在hadoopnamenode的配置文件Slave里添加新节点的host,别忘了在host文件里也要添加新添加的host名。
2、执行bin/启动集群
3、以下选择一种
1)如果不手动作平衡,插入的数据将会放在新添加的节点上。
以趋于平衡。
2)如果手动平衡,则和调用bin/sHadoopbalancer命令相似,也可加参数-threshold5(threshold是平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长)。
在使用时,如果在里面没有配置,那么集群hdfs内部默认使用1M/S的速度移动数据(soslowly...),我们可以通过在里面配置来加快balance的速度。
最开始我们配置的是20m/S,然后结果是导致job运行变得不稳定,出现一些意外的长map单元,某些reduce时间处理变长(整个集群负载满满的情况下,外加20m/s的balance),在前天的中国hadoop年会上听淘宝调整的为10m/s,需要调整后实验,看看情况如何。
另外再修改参数后,需要在namenode上运行重启hdfs生效。
我们可以通过停掉平衡任务。
作完平衡后,启动hbase,正常。
果cluster设置的副本数不为3(默认),需要先运行命令hadoopfs–setrep[-R];
进行设置一个文件的副本系数。
如果默认为3则不必。
如果执行完平衡以后才改变副本数,会将新加入到新节点上的所有数据删除。
设置的副本系数只在文件系统写入时有效,并不影响在新添加节点时,平衡时的副本数;
另外:
由于还有hbase数据库,因此,在运行完平衡以后,将hbase下的.META.文件删除(防止出错),启动hbase,执行hbaseadd_table/表名来进行hbase表恢复;
Hadoop1升级
1.运行dfsadmin-upgradeProgressstatus检查是否存在备份如果是第一次升级就不存在备份(在升级Hadoop前,如果已经存在备份,需要先结束finalize它。
)
2.备份下文件,同时要备份下hdfs的文件目录的元数据信息:
bin/hadoopfsck/-files-blocks-locations>
bin/hadoopdfs-lsr/>
bin/hadoopdfsadmin-report>
3.停止所有节点bin/
4.在所有节点上重新部署hadoop并替换conf文件夹下所有文件(就是将原有的更名为然后解压将中的conf文件替换为中的conf文件夹)
并且要对照修改中的路径指定是否正确
5.使用bin/-upgrade进行升级(DFS从一个版本升级到另外一个版本的时候,NameNode和DataNode使用的文件格式有可能会改变。
当你第一次使用新版本的时候,你要告诉Hadoop去改变HDFS版本,否则,新版本不会生效)
6.监控升级情况和升级问题处理
开始升级,你可以通过
bin/hadoopdfsadmin-upgradeProgress
命令来查看版本升级的情况。
当然你可以使用
bin/hadoopdfsadmin-upgradeProgressdetails
来查看更多的详细信息。
当升级过程被阻塞的时候,你可以使用
bin/hadoopdfsadmin-upgradeProgressforce
来强制升级继续执行(当你使用这个命令的时候,一定要慎重考虑)。
当HDFS升级完毕后,Hadoop依旧保留着旧版本的有关信息,
以便你可以方便的对HDFS进行降级操作。
可以使用bin/-rollback来执行降级操作。
7.对比现有hdfs的文件目录的元数据信息和升级的差异。
8.升级完成,Hadoop一次只保存一个版本的备份,当新版本运行几天以后还是没有出现什么问题,你就可以使用运行一段时间后没有问题再执行升级终结操作
bin/hadoopdfsadmin-finalizeUpgrade
命令把旧版本的备份从系统中删掉了。
删除以后rollback命令就失效了。
Hdfs
Mapreduce
Hbase部分
启动命令:
如果一个regionserver死掉了,可以执行该命令启动,也可以启动整个hbase;
停止命令:
停止hbase运行的命令.
日常维护
1.基本命令
建表:
create'testtable','coulmn1','coulmn2'
也可以建表时加coulmn的属性如:
create'testtable',{NAME=>'coulmn1',BLOOMFILTER=>'NONE',REPLICATION_SCOPE=>'0',VERSIONS=>'10',COMPRESSION=>'LZO',TTL=>'30000',IN_MEMORY=>'false',BLOCKCACHE=>'false'},{NAME=>'coulmn',BLOOMFILTER=>'NONE',REPLICATION_SCOPE=>'0',VERSIONS=>'30',COMPRESSION=>'LZO',TTL=>'30000',IN_MEMORY=>'true'}(其中的属性有versions:
设置历史版本数,TTL:
过期时间,COMPRESSION:
压缩方式,当配置lzo的情况)
删除表:
drop'testtable'(删除表之前先要禁用表,命令disable'testtable')
启用和禁用表:
enable'testtable'和disable'testtable'
其它的基本命令:
describe'testtable'(查看表结构),alert修改表结构,list列出所有表。
2.维护命令
1,major_compact'testtable',通常生产环境会关闭自动major_compact(配置文件中设为0),选择一个晚上用户少的时间窗口手工major_compact,如果hbase更新不是太频繁,可以一个星期对所有表做一次major_compact,这个可以在做完一次major_compact后,观看所有的storefile数量,如果storefile数量增加到major_compact后的storefile的近二倍时,可以对所有表做一次major_compact,时间比较长,操作尽量避免高锋期。
2,flush'testtable',将所有memstore刷新到hdfs,通常如果发现regionserver的内存使用过大,造成该机的regionserver很多线程block,可以执行一下flush操作,这个操作会造成hbase的storefile数量剧增,应尽量避免这个操作,还有一种情况,在hbase进行迁移的时候,如果选择拷贝文件方式,可以先停写入,然后flush所有表,拷贝文件。
3,balance_switchtrue或者balance_switchflase,配置master是否执行平衡各个regionserver的region数量,当我们需要维护或者重启一个regionserver时,会关闭balancer,这样就使得region在regionserver上的分布不均,这个时候需要手工的开启balance。
3.重启一个regionserver
bin/--restart--reload--debugnodename
这个操作是平滑的重启regionserver进程,对服务不会有影响,他会先将需要重启的regionserver上面的所有region迁移到其它的服务器,然后重启,最后又会将之前的region迁移回来,但我们修改一个配置时,可以用这种方式重启每一台机子,这个命令会关闭balancer,所以最后我们要在hbaseshell里面执行一下balance_switchtrue,对于hbaseregionserver重启,不要直接kill进程,这样会造成在这个时间长的中断,也不要通过bin/stopregionserver去重启,如果运气不太好,-ROOT-或者.META.表在上面的话,所有的请求会全部失败。
4.关闭下线一台regionserver
bin/--stopnodename
和上面一样,系统会在关闭之前迁移所有region,然后stop进程,同样最后我们要手工balance_switchtrue,开启master的region均衡。
5.检查region是否正常以及修复
bin/hbasehbck(检查)
bin/hbasehbck-fix(修复)
会返回所有的region是否正常挂载,如没有正常挂载可以使用下一条命令修复,如果还是不能修复,那需要看日志为什么失败,手工处理。
6.hbase的迁移
copytable方式
bin/hbase=zookeeper1,zookeeper2,zookeeper3:
/hbase'testtable'
目前之前的版本的不支持多版本的复制,已经支持多个版本的复制。
当然这个操作需要添加hbase目录里的conf/,可以复制hadoop的过来。
Export/Import
bin/hbasetesttable/user/testtable[versions][starttime][stoptime]
bin/hbasetesttable/user/testtable
跨版本的迁移,我觉得是一个不错的选择,而且copytable不支持多版本,而export支持多版本,比copytable更实用一些。
直接拷贝hdfs对应的文件
首先拷贝hdfs文件,如bin/hadoopdistcp然后在目的hbase上执行bin/hbasebin//hbase/testtable
生成meta信息后,重启hbase
这个操作是简单的方式,操作之前可以关闭hbase的写入,执行flush所有表(上面有介绍),再distcp拷贝,如果hadoop版本不一致,可以用hftp接口的方式,我推荐使用这种方式,成本低。
HBase升级
在版本,提供了升级命令,当然需要预先将低版本的升级到或者更高版本时,需要使用升级命令;
Hbase命令提供了如下的选项;
echo"Usage:
hbase[][]"
echo"Options:
"
echo"--configDIRConfigurationdirectiontouse.Default:
./conf"
echo"--hostsHOSTSOverridethelistin'regionservers'file"
echo""
echo"Commands:
"
echo"Somecommandstakearguments.Passnoargsor-hforusage."
echo"shellRuntheHBaseshell"
echo"hbckRunthehbase'fsck'tool"
echo"hlogWrite-ahead-loganalyzer"
echo"hfileStorefileanalyzer"
echo"zkcliRuntheZooKeepershell"
echo"upgradeUpgradehbase"
echo"masterRunanHBaseHMasternode"
echo"regionserverRunanHBaseHRegionServernode"
echo"zookeeperRunaZookeeperserver"
echo"restRunanHBaseRESTserver"
echo"thriftRuntheHBaseThriftserver"
echo"thrift2RuntheHBaseThrift2server"
echo"cleanRuntheHBasecleanupscript"
echo"classpathDumphbaseCLASSPATH"
echo"versionPrinttheversion"
echo"CLASSNAMERuntheclassnamedCLASSNAME"
其中“hbaseupgrade”就是升级命令;
升级步骤:
1、根据低版本的配置(conf目录下),修改高版本的配置(conf),hbase的pid文件目录和数据目录都不用修改,zk的配置都可以不更改,日志目录可以改变
2、拷贝必要的包到高版本hbase的lib目录下,例如:
当前的hadoop核心包
3、修改环境变量的HBASE_HOME目录,如果环境变量中配置了HBASELIB目录下的包,需要检查高版本是否存在,进行相应更改
4、同步到集群的其他机器中
5、执行“hbaseupgrade”更新命令,目的是更新当前hbase版本等内容
6、在主节点上执行””命令
7、检查hbase是否启动成功
Hive部分
Root用户登录后
启动命令:
servicehiveserverstart
重启命令:
servicehiveserverrestart
停止命令:
servicehiveserverstop
查看状态命令:
servicehiveserverstatus
以上命令是给远程调用时的服务;
直接在终端操作hive,以上服务可以不启动。