Hadoop、Hbase基本命令及调优方式
HDFS基本命令
接触大数据挺长时间了,项目刚刚上完线,趁着空闲时间整理下大数据hadoop、Hbase等常用命令以及各自的优化方式,当做是一个学习笔记吧。
HDFS命令基本格式:Hadoop fs -cmd < args >
ls 命令
hadoop fs -ls / 列出hdfs文件系统根目录下的目录和文件
hadoop fs -ls -R / 递归列出hdfs文件系统所有的目录和文件
put 命令
hadoop fs -put < local file > < hdfs file > 本地文件上传到HDFS
hadoop fs -put < local file or dir >...< hdfs dir > 多个本地文件或目录上传到HDFS
moveFromLocal 命令
hadoop fs -moveFromLocal < local src > ... < hdfs dst > 与put相类似,命令执行后源文件local src 被删除,也可以从从键盘读取输入到hdfs file中
copyFromLocal 命令
hadoop fs -copyFromLocal < local src > ... < hdfs dst > 与put相类似,也可以从从键盘读取输入到hdfs file中
get 命令
hadoop fs -get < hdfs file > < local file or dir> local file,不能和hdfs file名字不能相同,否则会提示文件已存在,没有重名的文件会复制到本地
hadoop fs -get < hdfs file or dir > ... < local dir > 拷贝多个文件或目录到本地时,本地要为文件夹路径
copyToLocal 命令
hadoop fs -copyToLocal < local src > ... < hdfs dst > 与get相类似
rm 命令
hadoop fs -rm < hdfs file > ... hadoop fs -rm -r < hdfs dir>... 每次可以删除多个文件或目录
mkdir 命令
hadoop fs -mkdir < hdfs path> 只能一级一级的建目录,父目录不存在的话使用这个命令会报错hadoop fs -mkdir -p < hdfs path> 所创建的目录如果父目录不存在就创建该父目录
cp 命令
hadoop fs -cp < hdfs file > < hdfs file > 目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件还存在。
hadoop fs -cp < hdfs file or dir >... < hdfs dir > 目标文件夹要存在,否则命令不能执行
mv 命令
hadoop fs -mv < hdfs file > < hdfs file > 目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件不存在hadoop fs -mv < hdfs file or dir >... < hdfs dir > 源路径有多个时,目标路径必须为目录,且必须存在。
du 命令
hadoop fs -du < hdsf path>
显示hdfs对应路径下每个文件夹和文件的大小hadoop fs -du -s < hdsf path> 显示hdfs对应路径下所有文件和的大小hadoop fs -du -h < hdsf path>
setrep 命令
hadoop fs -setrep -R 3 < hdfs path > 改变一个文件在hdfs中的副本个数,上述命令中数字3为所设置的副本个数,-R选项可以对一个人目录下的所有目录+文件递归执行改变副本个数的操作
tail 命令
hadoop fs -tail < hdfs file > 在标准输出中显示文件末尾的1KB数据archive 命令
hadoop archive -archiveName name.har -p < hdfs parent dir > < src >* < hdfs dst > 命令中参数。
name:压缩文件名,自己任意取;< hdfs parent dir > :压缩文件所在的父目录;< src >:要压缩的文件名;< hdfs dst >:压缩文件存放路径,*示例:hadoop archive -archiveName hadoop.har -p /user 1.txt 2.txt /des ,示例中将hdfs中/user目录下的文件1.txt,2.txt压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下,如果1.txt,2.txt不写就是将/user目录下所有的目录和文件压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下显示har的内容可以用如下命令:hadoop fs -ls /des/hadoop.jar 显示har压缩的是那些文件可以用如下命令hadoop fs -ls -R har:///des/hadoop.har
JavaAPI访问HDFS
FileSystem类主要方法:
get(),create(),append(),listStatus(),copyFromLocal()
HDFS日常管理
安全模式
☆集群启动后处于安全模式,直到副本数满足阀值要求才退出
☆命令:Hadoop dfsadmin –safemode enter|leave|get|wait
☆只能浏览不能修改
☆通常在系统维护之前使用
HDFS日常管理
☆集群基本信息报告:
Hadoop dfsadmin –report
☆动态刷新
host配置:hadoop dfsadmin –refreshNodes
☆节点间数据均衡:hadoop balancer
☆目录配额:hadoop dfsadmin -setQuota 文件个数
hadoop dfsadmin – setSpaceQuota 空间大小
HDFS日常管理-文件系统检查
☆命令:hadoop fsck <path> [-move | -delete | -openforwrite] [-files [-blocks [-locations -racks]]]
<path> 检查这个目录中的文件是否完整
-move 破损的文件移至/lost+found目录
-delete删除破损的文件
-openforwrite打印正在打开写操作的文件
-files打印正在check的文件名
-blocks打印block报告(需要和-files参数一起使用)
-locations打印每个block的位置信息(需要和-files参数一起使用)
-racks打印位置信息的网络拓扑图(需要和-files参数一起使用)
HDFS调优
☆dfs.block.size
建议512MB,太小的blocksize会增加NameNode负担
☆dfs.namenode.handler.count
根据CPU数和内存数设置,推荐100,较大的值可提升文件处理吞吐量
☆dfs.datanode.handler.count DataNode
的接收和发送数据的处理线程数,推荐200,受磁盘繁忙情况制约
☆dfs.data.dir DataNode
存储Block文件的目录,设置为多个可提升DataNode吞吐量,多目录以逗号分割
☆dfs.heartbeat.interval和heartbeat.recheck.interval
DN与NN心跳间隔,计算公式:timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval
☆dfs.datanode.max.xcievers DataNode
可同时处理的最大文件数
☆io.file.buffer.size
读写缓冲区大小,通常设置为65536以上,可减少IO次数
☆io.bytes.per.checksum
每校验码所校验的字节数,默认512字节,不要超过io.file.buffer.size
HBase
Rowkey设计原则
•长度原则
–Rowkey最长64kb。以byte[]存储,建议rowkey越短越好,不要超过16字节
•散列原则
–加盐
–哈希
–反转
–时间戳反转
•唯一原则,rowKey必须保证唯一
参数优化
处理线程优化
增加handler个数
参数hbase.regionserver.handler.count配置的是region server开启的处理对用户表的请求的线程个数,默认值是10。设置该值的原则是:如果每个请求的负载达到MB,如大的put,scan caching设置很大的scan,那么保持该值比较小;否则,如果负载小,如get,小的put,increment,delete,把该值设大。
缓冲大小
hfile.block.cache.size
regionserver cache的大小,默认是0.2,是整个堆内存的多少比例作为regionserver的cache,调大该值会提升查询性能,当然也不能过大,如果我们的hbase基本都是大量的查询,写入不是很多的话,调到0.5也就够了,说到这个值,有一个地方需要说明一下,如果生产环境有mapred任务去scan hbase的时候,一些要在mapred scan类中加一个scan.setCacheBlocks(false),避免由于mapred使用regionserver的cache都被替换,造成hbase的查询性能明显下降。
Memstore
hbase.hregion.memstore.flush.size
一个regionserver的单个region memstore的大小,默认是64M,在hbase结构中,一个regionserver管理多个region,一个region对应一个hlog和多个store,一个store对应多个storefile和一个memstore,这里的hbase.hregion.memstore.flush.size意思是一个region下面的所有store里面的memstore的达到多少时,开始将这些memstore flush到hdfs中去,配置这个值,需要参考一下,平均每个regionserver管理的region数量,如果每台regionsever管理的region不多的话,可以适当的调大该值,如512M时再flush。
hbase.regionserver.global.memstore.upperLimit/hbase.regionserver.global.me
mstore.lowerLimit
配置一台regionserver所有memstore占整个堆的最大比例,默认是0.4/0.35,二个值的差异在于是做局部的flush,还是全部flush,如果我们的regionserver日志中,频发出现因为超过hbase.regionserver.global.memstore.lowerLimit而做flush的信息,我觉得有必要调小hbase.hregion.memstore.flush.size,或者适当调大这二个值,当然hbase.regionserver.global.memstore.upperLimit和hfile.block.cache.size的和不能大于1,到0.8我觉得已经够大了。如果我们的jvm内存回收是使用cms的话,有一个值CMSInitiatingOccupancyFraction(内存使用到时多少时,一始cms回收内存)的大小和觉得和这个有关系,略小于hbase.regionserver.global.memstore.upperLimit和hfile.block.cache.size的和是一个不错的选择。
Compaction
•hbase.hstore.compactionThreshold/hbase.hregion.majorcompaction
hbase.hstore.compactionThreshold执行compaction的store数量,默认值是3,如果需要提高查询性能,当然是storefile的数量越小,性能越好,但是执行compaction本身有性能资源的开消,如果regionserver频繁在compacion对性能影响也很大。hbase.hregion.majorcompaction表示majorcompaction的周期,默认是1 天,majorcompaction与普通的compaction的区别是majorcompaction会清除过期的历史版本数据,同时合并storefile,而普通的compaction只做合并,通常都是majorcompaction,调为0,然后手工定期的去执行一下majorcompaction,适当调小点compacionThreshold。
Region
•hbase.hregion.max.filesize
配置region大小,0.94.12版本默认是10G,region的大小与集群支持的总数据量有关系,如果总数据量小,则单个region太大,不利于并行的数据处理,如果集群需支持的总数据量比较大,region太小,则会导致region的个数过多,导致region的管理等成本过高,如果一个RS配置的磁盘总量为3T*12=36T数据量,数据复制3份,则一台RS服务器可以存储10T的数据,如果每个region最大为10G,则最多1000个region,如此看,94.12的这个默认配置还是比较合适的,不过如果要自己管理split,则应该调大该值,并且在建表时规划好region数量和rowkey设计,进行region预建,做到一定时间内,每个region的数据大小在一定的数据量之下,当发现有大的region,或者需要对整个表进行region扩充时再进行split操作,一般提供在线服务的hbase集群均会弃用hbase的自动split,转而自己管理split。
Hadoop、Hbase基本命令及调优方式的更多相关文章
- Hbase和Hadoop的内存参数调优 + 前端控制台
1.hadoop的内存配置调优 mapred-site.xml的内存调整 <property> <name>mapreduce.map.memory.mb</name&g ...
- SQL调优简介及调优方式
引导语:我曾有一种感觉,不管何种调优方式,索引是最根本的方法,是一切优化手法的内功,所以一下我们 将讨论一些和索引相关的调优方式.索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多 ...
- HBase配置性能调优(转)
因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...
- HBase配置性能调优
因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...
- Hadoop| YARN| 计数器| 压缩| 调优
1. 计数器应用 2. 数据清洗(ETL) 在运行核心业务MapReduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据.清理的过程往往只需要运行Mapper程序,不需要运行Reduc ...
- Hive-常见调优方式 && 两个面试sql
Hive作为大数据领域常用的数据仓库组件,在设计和开发阶段需要注意效率.影响Hive效率的不仅仅是数据量过大:数据倾斜.数据冗余.job或I/O过多.MapReduce分配不合理等因素都对Hive的效 ...
- WLAN-AC+AP射频一劳永逸的调优方式
AP射频调优组网图 射频调优简介 射频调优的主要功能就是动态调整AP的信道和功率,可以使同一AC管理的各AP的信道和功率保持相对平衡,保证AP工作在最佳状态.WLAN网络中,AP的工作状态会受到周围环 ...
- Hbase G1 gc 调优最终参数
export HBASE_HEAPSIZE=16384export HBASE_OFFHEAPSIZE=25gexport HBASE_MASTER_OPTS="$HBASE_MASTER_ ...
- Hbase CMS GC 调优。
export HBASE_OPTS="-XX:+UseConcMarkSweepGC" export HBASE_LOG_DIR=/app/hbase/logexport HBAS ...
随机推荐
- Java 基础之一对象导论
对象导论 1.1 抽象过程 所有编程语言都提供抽象机制.人们所能解决的问题的复杂性直接取决于抽象的类型和质量. 汇编语言是对底层机器的轻微抽象. 我们将问题空间中的元素及其再解空间中的表示称为对象.这 ...
- 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--参数自动映射篇(6/8)
文章目录 前情概要 路由.action的扫描.发现.注册搞定之后,后来我发现在我们的action里面获取参数往往都是通过request对象来一个一个获取.同样的一行代码我们不厌其烦的重复写了无数次.遂 ...
- Dubbo原理和源码解析之服务暴露
github新增仓库 "dubbo-read"(点此查看),集合所有<Dubbo原理和源码解析>系列文章,后续将继续补充该系列,同时将针对Dubbo所做的功能扩展也进行 ...
- Week2 关于代码规范的一些认识
代码规范 我觉得代码规范是有必要的,而对于以下的四个观点我要提出自己的反驳: 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西 首先应该明白,什么是“编码规范”?它不 ...
- 21035218_Linux 实验三 程序破解
20135218 姬梦馨 1:掌握NOP.JNE.JE.JMP.CMP的汇编指令的机器码. NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行N ...
- BETA 版冲刺前准备
任务博客 组长博客 总的来讲Alpha阶段我们计划中的工作是如期完成的.不过由于这样那样的原因,前后端各个任务完成度不算非常高,距离完成一个真正好用.完美的软件还有所差距. 过去存在的问题 测试工作未 ...
- 异常 try – finally 注意的地方
finally 异常机制中还有一个重要的部分,就是finally, catch后面可以跟finally语句,语法如下所示: try{ //可能抛出异常 }catch(Exception e){ / ...
- PAT 甲级 1017 Queueing at Bank
https://pintia.cn/problem-sets/994805342720868352/problems/994805491530579968 Suppose a bank has K w ...
- vue$ref
vue的$ref方法 可以在元素上template中直接添加ref属性 类似html的id属性 用来做选项卡的切换的
- [转帖].NET Core 2.0 是您的最好选择吗?
.NET Core 2.0 是您的最好选择吗? https://www.cnblogs.com/vipyoumay/p/7388371.html 1. NET Core 2.0 是您的最好选择吗? 1 ...