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

相關文章
相關標籤/搜索