Hbase&Hadoop常用命令

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>

对于已经上传的文件,修改其副本个数

hadoop fs -setrep [-R] [-w] <rep> <path/file>:  Set the replication level of a file.
                The -R flag requests a recursive change of replication level
                for an entire tree.
 
例如:hadoop fs -setrep -R -w 2 /
上面的这句话会将HDFS根目录下所有的文件的保存的份数该为2.
 

手动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

上一篇:setInterval和setTimeout定时器


下一篇:如何使用python timeit模块使用实践