一、Hadoop概念

1.什么是Hadoop
2.Hadoop的特别点
3.Hadoop的三大组件

一、什么是Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算.。

二、Hadoop的特点

Hadoop能够使用户轻松开发和运行处理大数据的应用程序。
(1)高可靠性:Hadoop按位存储和处理数据的能力强,可靠性高。
(2)高扩展性:Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可以方便地扩展到数以千记的节点。
(3)高效性:Hadoop能够在结点之间动态地移动数据,并保证各个节点的动态平衡,因此出来速度非常快。
(4)高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。Hadoop带有用Java语言编写的框架,因此运行在Linux平台上是非常理想的。Hadoop上的应用程序也可以使用其他语言编写,如C++。

三、Hadoop三大组件

1、HDFS,hadoop的数据存储工具;
2、YARN,Hadoop的资源管理器;
3、Hadoop MapReduce,分布式计算框架。

二、Hadoop基本操作知识

1.HDFS

代码如下(示例):

--创建一个命名为'txt1'的文档
hdfs df -touchz /home/hadoop/txt1
--创建一个以/user/hadoop为路径的文件
hdfs dfs -mkdir -p /user/hadoop/123
--将所创建的文档上传至文件夹中
hdfs dfs -put /home/hadoop/txt1 /user/hadoop/123
--查询文件夹所含的文档
hdfs dfs -ls /user/hadoop/123
--查询文档的内容
hdfs dfs -cat /user/hadoop/123/txt1
--将HDFS下的文件下载复制到本地目录(先在本地创建tmp目录)
hdfs dfs -get /user/hadoop/123/txt1 /home/hadoop/tmp
--HDFS系统工作目录下'123'文件移动到input目录下(在HDFS系统工作目录下创建一个名为input目录)
hdfs dfs -mv 123 input
--删除HDFS系统工作目录下input目录
hdfs dfs -rm -r input
--显示占用的磁盘空间大小
hdfs dfs -du /user/hadoop/123
--将HDFS中的/user/hadoop/123/txt1复制为/user/hadoop/123/txt2
hdfs dfs -cp /user/hadoop/123/txt1 /user/hadoop/123/txt2
--需要设置目录/user/hadoop/123最多存放100个文件或目录
hdfs dfsadmin -setQuota 100 123
--需要设置目录/user/hadoop/123最多使用256M的存储空间
hdfs dfsadmin -setSpaceQuota 268435456 123
--对/user/hadoop/123目录开启快照
hdfs dfsadmin -allowSnapshot /user/hadoop/123
--创建快照1
hdfs dfs -createSnapshot /user/hadoop/123 123_1
--查看当前状态
hdfs dfsadmin -safemode get
--进入安全模式
hdfs dfsadmin -safemode enter
--强制离开安全模式
hdfs dfsadmin -safemode leave
--一直等待直到安全模式结束
hdfs dfsadmin -safemode wait

2.HBASE

代码如下(示例):

--查询服务器状态
status
--查询所有表
list
--创建一个表(表名为member123,列族为address,info)
create 'member123','address','info'
--获得表的描述
describe 'member123'
--增加一个列族(id)
alter 'member123','id'
--添加数据
put 'memeber123','行建','列族:列名','数据'
--查看整张表
scan 'member123'
--删除一个列族(id)
alter 'member123',{NAME=>'id',METHOD=>'delete'}
--删除列数据
delete 'member123','行键1','列族:列名1'
--删除行数据
deleteall 'member123','行键1'
--查询表中有多少行
count 'member123'
--获取表中数据
get 'member123','行键1','列族'
--扫描表中其中某列
scan 'member123',{COLUMNS=>'列族1:列名1'}
--设定一系列条件来进行过滤进行过滤查询
scan 'member123',{FILTER=>"SingleColumnValueFilter ('列族','列名',=,'substring:数据')"}




3.HIVE

--创建一个数据库
create database member123                                                                                                                    ;
--显示所有数据库
show database;
--切换当前数据库
use member123;
--删除一个空的数据库
drop database member123;
--如果数据库不为空,可以采用cascade命令强制删除
drop database member123 cascade;
--创建表并设置表中数据的分隔符
create table student(id int,name string)
row format delimited fields terminated by ',';
--查看当前数据库中的所有表
show tables;
--重命名表
alter table student rename to new_student;
--删除表
drop table student;
--本地文件导入Hive表
load data local inpath '/home/hadoop/student.txt' into table student;
--导入,并覆盖所有表中数据
load data local inpath '/home/hadoop/student.txt' overwrite into table student;
--查询表中所有数据
select * from student;
--查询表中指定列数据
select id, name from student;
--创建分区表(student以年级进行分区)
create external table student(id int,name string) partitioned by (garde string)
row format delimited fields terminated by ',';
--创建分桶表(emp表根据员工职位(job)进行分桶
create table emp_bucket(id int,name string,job string) clustered by (job) into 4 buckets
row format delimited fields terminated by ',';