Hbase中根据Rowkey的前缀Prefix查询数据:
scan 'test_xiaomifeng_monitoring_log',{FILTER => "(PrefixFilter ('166_20130816080'))"}
查看表结构:
describe 'table1'
创建表:create 'table1','d'
第一个是表名,第二个是family
建表时可以设置TTL过期时间:create 'tableName',{NAME=>'cf',TTL=>超时时间秒为单位}
后期修改
首先停表:disable 'tableName'
然后修改TTL失效时间:alter 'tableName',NAME => 'cf', TTL => 超时时间秒为单位
恢复表:enable 'tableName'
查看表元数据:describe 'tableName'
插入数据:
put 'tableName', 'RowKey','cf1:qualifier','value'
删除数据:
put'tableName', 'RowKey','cf1:qualifier','value'
delete 'tableName', 'RowKey', 'ColumnFamily:qualifier',
deleteall 'tableName', 'RowKey'
在本地和HDFS之间批量拷贝数据 :
copyFromLocal
Usage: hdfs dfs -copyFromLocal <localsrc> URI
Similar to put command, except that the source is restricted to a local file reference.
copyToLocal
Usage: hdfs dfs -copyToLocal [-ignorecrc] [-crc] URI <localdst>
Similar to get command, except that the destination is restricted to a local file reference.
修改文件副本保存的个数:
配置hadoop的conf目录中的hdfs-site.xml:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
对于已经上传的文件,修改其副本个数:
手动kill集群上的job:
先用hadoop job -list查看任务列表,找到jobid,更直观的做法是到job tracker上查找jobid。再用hadoop job -kill jobId。
HBase只返回前10行数据:
scan 'tb1', {LIMIT => 10}
查看某个目录所有文件各自的大小:
hadoop fs -du URI [URI …]
查看整个文件夹的大小:
hadoop fs -dus URI [URI …]
在普通机器上执行 Hadoop2的MapReduce Job:
安装完dpl-tools后,java -classpath /opt/hugedata/dpl/lib/*:aaa.jar com.hugedata.dataanalysis.test.TestMR
AccessControlException Permission denied: user=root, access=WRITE,异常的解决办法
异常信息:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.security.AccessControlException Permission denied: user=root, access=WRITE, inode="/user/hive/warehouse":hive:supergroup:drwxr-xr-x
原因:以root用户启动的hive shell。因为hadoop2中hdfs增加了权限控制,默认情况下,只有hive才有目录/user/hive/warehouse的写权限,可以通过修改该目录的权限来达到以root用户启动hive shell也可以操作hive数据库的目的。
解决办法:
sudo -u hdfs hadoop fs -chmod -R 777 /user/hive/warehouse/
然后再启动hive,执行create命令等需要写目录的命令就不会报错了。
查询HBase各个表的大小(最终占用空间需要*备份数):
hadoop fs -du -h /hbase/data/default
非linux的root用户,切换到hdfs用户的方法:
sudo su - hdfs
非linux的root用户,切换到hbase用户的方法:
sudo su -lm hbase
列出坏块:
hdfs fsck -list-corruptfileblocks