Hbase&Hadoop经常使用命令

Hbase中根据Rowkey的前缀Prefix查询数据html

scan 'test_xiaomifeng_monitoring_log',{FILTER => "(PrefixFilter ('166_20130816080'))"}java

 查看表结构node

describe 'table1'linux

 建立表:create 'table1','d'shell

第一个是表名,第二个是family数据库

建表时能够设置TTL过时时间:create 'tableName',{NAME=>'cf',TTL=>超时时间秒为单位} apache

后期修改oop

首先停表:disable 'tableName'spa

而后修改TTL失效时间:alter 'tableName',NAME => 'cf', TTL => 超时时间秒为单位rest

恢复表: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

相关文章
相关标签/搜索