Hadoop常用命令及范例

  hadoop中的zookeeper,hdfs,以及hive,hbase都是hadoop的组件,要学会熟练掌握相关的命令及其使用规则,下面就是一些常用命令及对hbase和hive的操作语句,同时也列出了一些范例。

  start-dfs.sh

  NameNode 进程启动:hadoop-daemon.sh start namenode

  DataNode 进程启动:hadoop-daemon.sh start datanode

  HA 高可用环境中需要启动的进程:

  zookeeper:

  zkServer.sh start 启动

  zkServer.sh stop 停止

  zkServer.sh status 查看状态 leader follwer

  journalnode 集群命令

  hadoop-daemon.sh start journalnode 启动

  hadoop-daemon.sh stop journalnode 停止

  ZKFC

  启动 zkfc 进程: hadoop-daemon.sh start zkfc

  停止 zkfc 进程: hadoop-daemon.sh stop zkfc

  1. shell命令 管 理和 HDFS 的文件管 理。

  (1)启动 Zookeeper

  zkServer.sh start

  (2)启动 HDFS 的命令

  start-dfs.sh

  (3)启动 Yarn 的命令

  start-yarn.sh

  (4)显示 HDFS 中/data/test 目录信息

  hadoop fs -mkdir /data/test

  hadoop fs -lsr /data/test

  (5)将本地文件/tmp/log.txt 文件上传到/data/test 目录中

  hadoop fs -put /tmp/log.txt /data/test

  (6)设置文件/data/test/log.txt 的副本数为 3

  hadoop fs -setrep -w 3 /data/test/log.txt

  (7)显示/data/test/log.txt 文件内容

  hadoop fs -cat /data/test/log.txt

  (8)将/data/test/log.txt 文件移动到集群/user/hadoop 目录下

  hadoop fs -mkdir /user/hadoop

  hadoop fs -mv /data/test/log.txt /user/hadoop

  (9)将/data/test/log.txt 文件下载到/home/hadoop 目录下

  hadoop fs -copyToLocal /data/test/log.txt /home/hadoop/

  (10)关闭 HDFS 命令

  stop-dfs.sh

  (11)停止 Zookeeper

  zkServer.sh stop

  2.将学生数据存储到 Hive 数据仓库中,信息包括(学号,姓名,性别,年龄,联系方式,

  邮箱),创建表语法如下:

  启动 hive 前切记要先启动 mysql 数据库

  create table student(sno string ,name string ,sex string ,age int ,phone string, email string) row

  format delimited fields terminated by ',' ;(1)将本地数据“/tmp/student.dat”加载到 student 表,写出操作语句

  load data local inpath '/tmp/student.dat' overwrite into table student;

  (2)写 HQL 语句查询全部学生信息

  select * from student;

  (3)写 HQL 语句查询各个年龄及对应学生数量

  (4) select age,count(*) from student group by age;

  (5)写 HQL 语句查询全部学生的姓名和性别

  select name,sex from student;

  (6)写 HQL 语句查询年龄为 18 的学生姓名和联系方式

  select name,phone from student where age=18;

  (7)写 HQL 语句查看 student 表结构

  describe student;

  (8)写 HQL 语句删除 student 表

  drop table student;

  (9)导出 生 地/home/hadoop/out 目录 ,写出 语

  from student insert overwrite local directory '/home/hadoop/out' select *;

  3.员工表 employee 包含两个列族 basic 和 info,使用 shell 命令完成以下操作。

  (1)启动 HBase 集群

  注意:在启动 hbase 集群前,需要将 zookeeper,hdfs,yarn 及历史服务器启动

  zkServer.sh start

  start-dfs.sh

  start-yarn.sh

  mr-jobhistory-daemon.sh start historyserver

  启动 hbase 集群

  start-hbase.sh

  hbase shell

  (2)在 HBase 中创建 employee 表

  create 'employee','basic','info'

  (3)一个员工行键为“19006”,basic 列族有 sex 列,值为“男”,添加该值

  put 'employee','19006','basic:sex','nan'

  (4)获取行键为“19002”的员工的性别信息

  get 'employee','19006','basic:sex'

  (5)获取行键为“19002”的员工的 info 列族所有数据

  get 'employee','19006','info'

  (6)查询所有员工的数据

  scan 'employee'

  (7)统计 employee 表的行数

  count 'employee'

  (8)关闭 HBase 集群

  stop-hbase.sh

  ********

  (9)单独启动和关闭 hadoop 服务(10) 启动名称节点

  (11) hadoop-daemon.sh start namenode

  (12) 启动数据节点

  (13)hadoop-daemons.sh start datanode slave

  (14)开启 resourcemanager

  (15)yarn-daemon.sh start resourcemanager

  (16)停止一个数据节点

  (17)hadoop-daemon.sh stop datanode

  (18)重新开启

  (19)hadoop-daemon.sh start datanode

  HBase基本语法及示例: (1)建数据表,包含两个列族,第一个列族保留版本为 2,第二个列族保留版本为 1;

  create 'stu',{NAME=>'info',VERSIONS=>2},{NAME=>'grade'}

  (2) put 添加 , 一 一 识 message;

  put 'stu','zhangsan','info:message','16jiruangongyiban'

  put 'stu','zhangsan','grade:c++','90'

  (3)使用 get 和 scan 查询数据。

  get 'stu' ,'zhangsan', 'info'

  get 'stu', 'zhangsan',{COLUMNS=>'info:message',VERSIONS=>2}

  scan 'stu'

  Hbase 语法总结:

  注意,在向 hbase 的表中添加数据的时候只能一列一列的添加

  添加数据:

  put '行键' ,'列族名:列名','数值'

  获取数据:

  get '表名','行键'

  get '表名','行键','列族名'

  get '表名','行键','列族名:列名'

  get '表名','行键',{COLUMNS=>'列族名:列名',VERSIONS=>版本}

  扫描数据:

  scan '表名'

  scan '表名' {COLUMNS=>'列族名'}

  scan '表名' {COLUMNS=>'列族名:列名'}

  scan '表名' {COLUMNS=>'列族名:列名',VERSIONS=>版本}

  修改数据表:

  alter '表名',{NAME=>'已经存在的列族名',VERSIONS=>版本}

  清除数据表:

  truncate '表名'

  disable '表名' drop '表名'

  Hive 示例: 使用 DDL 完成数据定义

  按照下面学生信息创建学生表和标准身高体重表并加载数据,分别创建内部表、外部表、分区表和桶表,其中分区依据是专业名称,桶表分为 3 个桶。学生信息实例:

  学号 姓名 性别 爱好 年龄 学习成绩 通讯地址

  实验内容 140010101 张三 男 足球,篮球,长跑等 19 C 程序:90,Java:85,DB:88 河南,郑州,大

  学 路 60 号,450001

  内部表:

  create table stu(sno int,sname string,sex string,hobby array,age int,grade

  map,address struct)row format

  delimited fields terminated by ' ' collection items terminated by ',' map keys terminated by':';

  加载数据:无锡妇科医院哪家好 http://mobile.xasgyy.net/

  load data local inpath 'kk.txt' overwrite into table stu;

  分区表:

  create table stupartition(sno int,sname string,sex string,hobby array,age int,grade

  map,address struct)partitioned

  by (major string)row format delimited fields terminated by ' ' collection items terminated by ','

  map keys terminated by':';

  加载数据:

  load data local inpath 'kk.txt' overwrite into table stupartition partition(major='jsj');

  桶表:

  create table stubucket(sno int,sname string,sex string,hobby array,age int,grade

  map,address struct)clustered by

  (age) into 3 buckets row format delimited fields terminated by ' ' collection items terminated by

  ',' map keys terminated by':';

  设置使用分桶属性:set hive.enforce.bucketing=true;

  加载数据:

  load data local inpath 'kk.txt' overwrite into table stubucket;

  查看数据存储位置可以看到桶表中的数据

  hadoop fs -ls /user/hive/warehouse

  外部表:

  create external table stuexternal(sno int,sname string,sex string,hobby array,age

  int,grade map,address

  struct)row format delimited fields

  terminated by ' ' collection items terminated by ',' map keys terminated by':' location

  '/user/hive/external/stuexternal';

  加载数据:

  load data local inpath 'kk.txt' overwrite into table stuexternal;

  标准身高体重实例: 年龄 身高范围 体重范围

  19 160-170 60-65

  身高体重内部表:

  create table shengao(age int,highth struct,weighth struct)row

  format delimited fields terminated by ' ' collection items terminated by '-';'

  加载数据:

  load data local inpath 'shengao.txt' overwrite into table shengao;

  3.使用 DML 完成数据查询

  查询指定学生的第一爱好和通讯邮编;查询指定学生姓名、性别和身高范围;查询有对应身高范围和体重范围的学生信息;查询软件工程专业学生总人数;查询各专业学生的

  平均年龄。

  查询指定学生的第一爱好和通讯邮编;

  select hobby[0],address.postid from stu where sname='aa';

  查询指定学生姓名、性别和身高范围;

  select sex,highth from stu left outer join shengao on stu.age=shengao.age where stu.sname='aa';

  查询有对应身高范围和体重范围的学生信息;

  select * from stu left outer join shengao on stu.age=shengao.age where highth.up=170 and

  highth.down=160 and weighth.max=65 and weighth.min=60;

  查询软件工程专业学生总人数;

  select count(*) from stupartition where major='rjgc';

  查询各专业学生的平均年龄。

  select avg(age) major from stupartition group by(major);

posted @ 2019-07-03 10:02  tiana_Z  阅读(929)  评论(0编辑  收藏  举报