hadoop的数据存储

hadoop的数据存储,第1张

存放到HDFS 一般都是要分析的数据。分析完成的数据直接存储到MYSQL 或者ORACLE 中。这种处理方式是离线处理。如日志文件存储到hdfs 分析出网站的流量 UV PV 等等。一般都是用pig hive 和mr 等进行分析的。

存放到HBASE 一般都是数据拿过来直接用的。而且他是实时的。也就是说数据就是成型的而且不需要进行分析就能得到结果的数据。

大致就是这么个意思。有点啰嗦了。

对spark、hive、impala、hdfs的常用命令作了如下总结,欢迎大家补充!

1 Spark的使用:

以通过SecureCRT访问IP地址:1010234198 为例进行说明:

先输入:ll //查询集群是否装有spark

>su - mr

>/home/mr/spark/bin/beeline -u "jdbc:hive2:/bigdata198:18000/" -n mr -p ""

>show databases; //显示其中数据库,例如

>use bigmax; //使用数据库bigmax

>show tables; //查询目录中所有的表

>desc formatted TableName; //显示表的详细信息,包括分区、字段、地址等信息

>desc TableName; //显示表中的字段和分区信息

>select count() from TableName; //显示表中数据数量,可以用来判断表是否为空

>drop table TableName; //删除表的信息

>drop bigmax //删除数据库bigmax

>describe database zxvmax //查询数据库zxvmax信息

创建一个表

第一步:

>create external table if not exists lte_Amaze //创建一个叫lte_Amaze的表

( //括号中每一行为表中的各个字段的名称和其所属的数据类型,并用空格隔开

DateTime String,

MilliSec int,

Network int,

eNodeBID int,

CID int,

IMSI String,

DataType int,

AoA int,

ServerRsrp int,

ServerRsrq int,

TA int,

Cqi0 Tinyint,

Cqi1 Tinyint //注意,最后一个字段结束后,没有逗号

)

partitioned by (p_date string, p_hour INT) //以p_date和p_hour作为分区

row format delimited fields terminated by ',' //表中行结构是以逗号作为分隔符,与上边的表中字段以逗号结尾相一致/

stored as textfile; //以文本格式进行保存

第二步:添加分区,指定分区的位置

>alter table lte_Amaze add partition (p_date='2015-01-27',p_hour=0) location'/lte/nds/mr/lte_nds_cdt_uedetail/p_date=2015-01-27/p_hour=0';

//添加lte_Amaze表中分区信息,进行赋值。

//并制定分区对应目录/lte/nds/mr下表lte_nds_cdt_uedetail中对应分区信息

第三步:察看添加的结果

>show partitions lte_Amaze; //显示表的分区信息

2 hdfs使用:

#su - hdfs //切换到hdfs用户下 、

#hadoop fs –ls ///查看进程

# cd /hdfs/bin //进入hdfs安装bin目录

>hadoop fs -ls /umtsd/cdt/ //查询/umtsd/cdt/文件目录

>hadoop fs -mkdir /umtsd/test //在/umtsd目录下创建test目录

>hadoop fs -put /home/data/u1002csv /impala/data/u5002 //将home/data/u1002csv这个文件put到hdfs文件目录上。put到hdfs上的数据文件以逗号“,”分隔符文件(csv),数据不论类型,直接是数据,没有双引号和单引号

>hadoop fs -rm /umtsd/test/testtxt //删除umtsd/test目录下的testtxt文件

>hadoop fs -cat /umtsd/test/testtxt //查看umtsd/test目录下的testtxt文件内容

3hive *** 作使用:

#su - mr //切换到mr用户下

#hive //进入hive查询 *** 作界面

hive>show tables; //查询当前创建的所有表

hive>show databases; //查询当前创建的数据库

hive>describe table_name; {或者desc table_name}//查看表的字段的定义和分区信息,有明确区分(impala下该命令把分区信息以字段的形式显示出来,不怎么好区分)

hive> show partitions table_name; //查看表对应数据现有的分区信息,impala下没有该命令

hive> quit;//退出hive *** 作界面

hive>desc formatted table_name; 查看表结构,分隔符等信息

hive> alter table ceshi change id id int; 修改表的列数据类型 //将id数据类型修改为int 注意是两个id

hive> SHOW TABLES 's'; 按正条件(正则表达式)显示表,

[mr@aico ~]$ exit; 退出mr用户 *** 作界面,到[root@aico]界面

impala *** 作使用:

#su - mr //切换到mr用户下

#cd impala/bin //进入impala安装bin目录

#/impala/bin> impala-shellsh -i 1010234166/localhost //进入impala查询 *** 作界面

[1010234166:21000] >show databases; //查询当前创建的数据库

[1010234166:21000] >use database_name; //选择使用数据库,默认情况下是使用default数据库

[1010234166:21000] > show tables; //查询当前数据库下创建的所有表

[1010234166:21000] >describe table_name; //查看表的字段的定义,包括分区信息,没有明确区分

[1010234166:21000] > describe formatted table_name; //查看表对应格式化信息,包括分区,所属数据库,创建用户,创建时间等详细信息。

[1010234166:21000] >refresh table_name; //刷新一下,保证元数据是最新的

[1010234166:21000] > alter TABLE U107 ADD PARTITION(reportDate="2013-09-27",rncid=487)LOCATION '/umts/cdt/

MREMITABLE/20130927/rncid=487' //添加分区信息,具体的表和数据的对应关系

[1010234166:21000] > alter TABLE U100 drop PARTITION(reportDate="2013-09-25",rncid=487); //删除现有的分区,数据与表的关联

[1010234166:21000] >quit; //退出impala *** 作界面

[mr@aicod bin]$ impala-shell; 得到welcome impala的信息,进入impala 查询 *** 作界面

[aicod:21000] > 按两次tab键,查看可以用的命令

alter describe help profile shell values

connect drop history quit show version

create exit insert select unset with

desc explain load set use

如下面这个shell脚本:

#Oracle的连接字符串,其中包含了Oracle的地址,SID,和端口号

CONNECTURL=jdbc:oracle:thin:@201356021:1521:DWRAC2

#使用的用户名

ORACLENAME=kkaa

#使用的密码

ORACLEPASSWORD=kkaa123

#需要从Oracle中导入的表名

oralceTableName=tt

#需要从Oracle中导入的表中的字段名

columns=AREA_ID,TEAM_NAME

#将Oracle中的数据导入到HDFS后的存放路径

hdfsPath=apps/as/hive/$oralceTableName

#执行导入逻辑。将Oracle中的数据导入到HDFS中

sqoop import --append --connect $CONNECTURL --username $ORACLENAME --password $ORACLEPASSWORD --target-dir $hdfsPath --num-mappers 1 --table $oralceTableName --columns $columns --fields-terminated-by '\001'

执行这个脚本之后,导入程序就完成了。

Hadoop不是数据库技术。Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

以上就是关于hadoop的数据存储全部的内容,包括:hadoop的数据存储、spark、hive、impala、hdfs的常用命令、怎样将数据库数据写入到hdfs中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9758340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存