工具篇-大数据组件的一些快捷Shell操作

一、Hbase

先来个中文的概括

1. HBase shell窗口进入

执行hbase shell

2. HBase表的创建

# 语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}
# 例如:创建表user,有两个family name:id,f2,且版本数前者为3,后者为1

1 hbase(main)> create 'user',{NAME => 'id', VERSIONS => 3},{NAME => 'f2', VERSIONS => 1}

3. HBase表的删除

先disable表
再drop表

1 hbase(main)> disable 't1'
2 hbase(main)> drop 't1'

4. HBase表的清空

1 hbase(main)> truncate 't1'

5. 统计HBase表行数

1 count '表名'

6. 显示所有HBase表

1 list

7. 查看HBase表结构

1 describe 't1'

结果为

Table t1 is ENABLED
t1
COLUMN FAMILIES DESCRIPTION
{NAME => 'T', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => '2073
600 SECONDS (24 DAYS)', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'true', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN
 => 'false', COMPRESSION => 'SNAPPY', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}

8. 复制HBase表结构

7可以查看到hbase表的结构,把红色部分复制下来加上create '表名'即可

1 create 't2',{NAME => 'T', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => '2073600 SECONDS (24 DAYS)', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'true', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'SNAPPY', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}

二、MongoDB

1. 选择db库

1 use DB_NAME

2. 显示集合collections

1 show collections 或 show tables

3. 删除集合collections

1 db.COLLECTION_NAME.drop()

4. 查询collction记录数

1 db.COLLECTION_NAME.count()

5. where查询

1 db.COLLECTION_NAME.find({$where:"this.field1 == 'xxx' && this.field2 == 'xxx'"})
2 db.COLLECTION_NAME.find({$where:"this.field1 < this.field2"})

 

6. 用户验证登录 

1 db.createCollection(name)

7. 查看数据库

 1 > db.stats(); 
 2 { 
 3   "db" : "test",        //当前数据库 
 4   "collections" : 3,      //当前数据库多少表 
 5   "objects" : 4,        //当前数据库所有表多少条数据 
 6   "avgObjSize" : 51,      //每条数据的平均大小 
 7   "dataSize" : 204,      //所有数据的总大小 
 8   "storageSize" : 16384,    //所有数据占的磁盘大小 
 9   "numExtents" : 3, 
10   "indexes" : 1,        //索引数 
11   "indexSize" : 8176,     //索引大小 
12   "fileSize" : 201326592,   //预分配给数据库的文件大小 
13   "nsSizeMB" : 16, 
14   "dataFileVersion" : { 
15     "major" : 4, 
16     "minor" : 5 
17   }, 
18   "ok" : 1 
19 } 

8. 查看数据表

 1 > db.表名.stats(); 
 2 { 
 3   "ns" : "库名.表名", 
 4   "count" : 1, 
 5   "size" : 56, 
 6   "avgObjSize" : 56, 
 7   "storageSize" : 8192, 
 8   "numExtents" : 1, 
 9   "nindexes" : 1, 
10   "lastExtentSize" : 8192, 
11   "paddingFactor" : 1, 
12   "systemFlags" : 1, 
13   "userFlags" : 0, 
14   "totalIndexSize" : 8176, 
15   "indexSizes" : { 
16     "_id_" : 8176 
17   }, 
18   "ok" : 1 
19 } 

9. 用户验证登录

1 mongo --host 192.168.0.16 --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"

10. update字段

db.COLLECTION_NAME.update({},{$unset:{'field1':'xxxx'}},false, true)

11. 指定查询字段

1 db.COLLECTION_NAME.find({}, {"field":1});

12. 报错not master and slaveok

这是正常的,因为SECONDARY是不允许读写的,如果非要解决,方法如下:

1 rs.slaveOk();

 

 

三、Redis

可以参考:https://www.cnblogs.com/hylazphp/p/10153481.html

1. 进入shell

1 redis-cli -h localhost -p 6379 -n <db>

2. 读取set

1 smembers 'key'

3. 读取set到大小

1 scard 'key'

4. 查看所有key

1 keys *

5. hashMap查看所有值

1 hgetall 

6. 查看key的ttl

1 ttl 'key' #查看的结果是当前还剩余多少毫秒

7. 设置当前key的ttl

1 expire 'key' 10000

8. 清空当前数据库的所有key

1 flushdb

9. 查看当前的redis连接数

1 info clients

10. 查看redis允许的最大连接数

1 config get maxclients

11. 查看命令使用情况

1 info commandstats

cmdstat_XXX: calls=XXX,usec=XXX,usec_per_call=XXX
其中,第一个XXX是命令的名称,第二个XXX是命令调用次数,第三个XXX是命令消耗的CPU时间总量(以微秒为单位),第三个XXX是每次调用命令消耗的CPU时间的平均值(以微秒为单位)。

info的命令有很多,可以参考:如何监控Redis的工作状态——INFO命令详解

12. 实时打印出 Redis 服务器接收到的命令,调试用

1 monitor

13. AOF 持久化

为了打开 AOF 持久化的功能,我们只需要将 redis.conf 配置文件中的appendonly配置选项设置为yes即可,如果不进行持久化redis重启数据就没了。涉及 AOF 持久化的几个常用配置如下所示:

1 appendonly yes
2 appendfilename "appendonly.aof"
3 appendfsync everysec

appendonly:是否打开 AOF 持久化功能
appendfilename:AOF 文件名称
appendfsync:同步到硬盘的频率

14. redis库中的数据导出导入

法一:可以使用redis-load、redis-dump方法,该方法没用过,自行百度嘿嘿

法二:使用redis-dump-load 1.1包,官网:https://pypi.org/project/redis-dump-load/1.1/

也可以参见博客:https://www.234du.com/1174.html

导出:

1 redisdl.py -H ip -p 6379 -d 0 -o /tmp/db0.json

导入:

1 redisdl.py -l -H ip -p 6379 -d 12 /tmp/db0.json

四、Docker

1. 查看当前正在运行的容器

1 docker ps 或者 sudo docker ps

2. 进入到容器中运行命令

比如,1中拿到了容器的ID xxxx,则可以执行

docker exec -it xxxx /bin/bash 或者 sudo docker exec -it xxxx /bin/bash

3. 本地镜像上传镜像仓库

1 docker push [OPTIONS] NAME[:TAG]

4. COPY和ADD命令

Dockerfile中的COPY指令和ADD指令都可以将主机上的资源复制或加入到容器镜像中,COPY指令和ADD指令的唯一区别在于是否支持从远程URL获取资源。它们的注意事项如下:

  • 源路径可以有多个
  • 源路径是相对于执行build的相对路径
  • 源路径如果是本地路径,必须是build上下文中的路径
  • 源路径如果是一个目录,则该目录下的所有内容都将被加入到容器,但是该目录本身不会
  • 目标路径必须是绝对路径,或相对于WORKDIR的相对路径
  • 目标路径如果不存在,则会创建相应的完整路径
  • 目标路径如果不是一个文件,则必须使用/结束
  • 路径中可以使用通配符

示例:

1 ADD http://example.com/big.tar.xz /usr/src/things/

5. Dockfile中其他一些命令

注释: 以#开头默认是注释;

FROM:

Dockerfile第一条指令应该是FROM。FROM指定一个已经存在的镜像,后续指令都是将基于该镜像进行,这个镜像被称为基础镜像(base iamge)。

MAINTAINER:

告诉Docker该镜像的作者及作者的邮箱地址

RUN:

RUN指令会在shell里使用命令包装器/bin/sh -c 来执行。每条RUN指令都会创建一个新的镜像层,如果该指令执行成功,就会将此镜像层提交,然后继续执行Dockerfile中的下一个指令。

ENV:
ENV key value
用来设置环境变量,后续的RUN可以使用它所创建的环境变量
WORKDIR:
用来指定当前工作目录

6. Docker build命令

1 docker build -t runoob/ubuntu:v1 . 

-t:镜像的名字及标签,通常 name:tag 或者 name 格式,  -f指定Dockfile文件路径,.表示当前目录,docker build 会将这个路径下所有的文件都打包上传给 Docker 引擎,其他的参数参见:Docker命令大全。 

五、Zookeeper

1. 连接远程zookeeper服务

./zkCli.sh -server ip:port

 

posted @ 2019-04-30 12:06  akia开凯  阅读(300)  评论(0编辑  收藏  举报