网站首页 > 博客文章 正文
一、压缩
三种阶段
1.在数据进入HDFS之前进行压缩
2.在MapRecduce的shuffle过程中:Map完成 Reduce开始阶段 数据在节点之间传输的时候进行压缩
3.数据处理完成存到HDFS之上的时候进行压缩
总的来说压缩的目的:
1.节省HDFS的存储空间,缓解存储压力
2.减少网络传输的数据,减轻网络传输负载
hadoop需要支持压缩
/opt/bigdata/hadoop-2.7.3/bin/hadoop checknative
hadoop不支持解决办法:
解压native-2.7.3-snappy.tar.gz ,替换lib目录下的native
Hadoop目录下
删除native
解压拷贝native-2.7.3-snappy.tar.gz
tar -zxvf /data/tools/native-2.7.3-snappy.tar.gz -C ./
再检查是否支持
HBase是否支持支持压缩
/opt/bigdata/hbase-1.2.1/bin/hbase org.apache.hadoop.util.NativeLibraryChecker
步骤
软件名称:hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
1.解压
tar -zxvf hadoop-snappy-0.0.1-SNAPSHOT.tar.gz -C /opt/bigdata/hadoop-2.7.3/
解压目录
目录结构
2.配置窗口环境变量
export HBASE_HOME=/opt/bigdata/hbase-1.2.1/
export HADOOP_SNAPPY_HOME=/opt/bigdata/hadoop-2.7.3/hadoop-snappy-0.0.1-SNAPSHOT
export HADOOP_HOME=/opt/bigdata/hadoop-2.7.3
3.拷贝hadoop-snappy-0.0.1-SNAPSHOT.jar到$HBASE_HOME/lib
cp -r /opt/bigdata/hadoop-2.7.3/hadoop-snappy-0.0.1-SNAPSHOT/lib/hadoop-snappy-0.0.1-SNAPSHOT.jar /opt/bigdata/hbase-1.2.1/lib
查看包是否拷贝
4.创建native目录
mkdir $HBASE_HOME/lib/native
mkdir -p /opt/bigdata/hbase-1.2.1/lib/native
5.设置软链接
ln -s $HADOOP_HOME/lib/native $HBASE_HOME/lib/native/Linux-amd64-64
再次在${HBASE_HOME}验证是否支持压缩
重启habse的进程,以使配置生效
/opt/bigdata/hbase-1.2.1/bin/stop-hbase.sh
/opt/bigdata/hbase-1.2.1/bin/start-hbase.sh
进入hbase创建支持snappy压缩的表
bin/hbase shell
描述表信息
desc 't1'
更改表的信息 ,t1表是已经有数据的disable 't1'
alter 't1', NAME => 'f', COMPRESSION => 'snappy'
(也可以直接更改
alter 't1', NAME => 'f1, COMPRESSION => 'snappy'
)
enable 't1'
查看信息
做一个练习
创建表 通过{}设置变量值
create 'tsnappy1', { NAME => 'f'}
create 'tsnappy2', { NAME => 'f', COMPRESSION => 'snappy'}
插入相同的数据到两张表中:看下文件大小,文件小效果不是很明显,大数据效果会更明显
二、hive和hbase的集成
注意版本:Hive 1.x will remain compatible with HBase 0.98.x and lower versions. Hive 2.x will be compatible with HBase 1.x and higher
如果版本不兼容,考虑编译hive的版本
apache-hive-1.2.1-src.tar.gz
我这里有一个编译好的
apache-hive-1.2.1-hbase.tar.gz
解压缩
进入目录
hive和hbase表之间进行关联,依赖hive-hbase-handler-1.2.1.jar
替换hive_home 下lib里面的jar
rm -f hive-hbase-handler-1.2.1.jar
cp /data/tools/apache-hive-1.2.1-bin/lib/hive-hbase-handler-1.2.1.jar ./
(1)基本了解:
hbase表数据映射到hive表中,数据存在hbase
hive表类型:管理表和外部表
管理表:在hive建表,同时hbase是不存在该表,hbase建相同的表,数据不是在hive,而是在hbase
外部表:在hive建表,同时hbase是存在该表,数据不是在hive,而是在hbase。
(2)框架之间的集成首先考虑的是:jar包和配置。
拷贝jar包到hive/lib下
上传
修改hive-site.xml文件
指定ZK的实例化地址,用于连接hbase集群,因为ZK是访问入口
hbase.zookeeper.quorum
masterhbase,masterslave1,masterslave2
启动hive
将hive的表映射到hbase
建表(内部表)
CREATE TABLE hbase_table_1(
key int,
name string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name")
TBLPROPERTIES ("hbase.table.name" = "wzy", "hbase.mapred.output.outputtable" = "wzy");
(1)hbase.columns.mapping:这个属性必须要写的
(2)hbase.table.name:这个是映射到hbase表的名称,这个属性可选,如果不要,那么对应的hbase表名称就是hive
建表的名称hbase_table_1
(3)hbase.mapred.output.outputtable:这个可选,直接可以不要
如果报错及解决办法
(1)报错:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.HTableDescrip
tor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
hive和hbase版本之间不兼容
编译hive的版本支持hbase1.x
解压hive的tar包
修改仓库的路径
添加hbase的jar
(2)报错:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:For direct Meta
Store DB connections, we don't support retries at the client level.)
修改mysql元数据的编码字符集:alter database metastore2 character set latin1;
mysql驱动jar导入hive的lib目录。
在hbase查看下,表存在了
可以查看表信息
将hbase中的表stu_info映射到hive
再查看一张表
CREATE EXTERNAL TABLE stu_info(
uuid int,
name string,
age string,
sex string,
job string,
xueli string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age,info:sex,work:job,degree:xueli")
TBLPROPERTIES("hbase.table.name" = "stu_info");
查询下
select * from stu_info;
在hive中去加载映射表数据:load是不行的,必须使用要跑mr的。比如:inser into 子查询的方式
比如建一张表:
create table dept(
deptno int comment '部门编号',
dname string comment '部门名称',
loc string comment '地址'
)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
载入数据
load data local inpath '/data/dept.txt' into table dept;
插入数据
INSERT OVERWRITE TABLE hbase_table_1 SELECT deptno,dname from dept;
select * from hbase_table_1;
scan "wzy"
在hbase中添加数据
put 'wzy','6','info:name','flume'
Scan下
Hive查看下
所以
在hive表添加数据,hbase可直接更新数据
在hive表添加数据,hbase可直接更新数据
可以看下50070的hive页面,然后在看50070的hbase
在hive中没有数据
在hbase中也没有
hbase需要flush下,手动刷新
flush 'wzy'
Hbase上有了
但hive上也没有
将hbase已经存在的表映射到hive:
想要映射hbase中已经存在的表:那么在hive中必须要是使用外部表属性EXTERNAL
CREATE EXTERNAL TABLE hbase_table_2(
uuid int,
username string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")
TBLPROPERTIES("hbase.table.name" = "wzy");
查看下
针对于映射hbase外部表(可以练习下):
在hive重新修改数据到外部表,hbase数据没有做更新
在hbase重新修改数据,hive是有变化的
补充一点:key可加可不加
CREATE EXTERNAL TABLE hbase_table_3(
uuid int,
username string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name")
TBLPROPERTIES("hbase.table.name" = "wzy");
内部表和外部表的区别:
内部表:删除表,对应的源数据文件就会被删除
外部表:删除表,对应的源数据文件不会被删除
drop删除hbase_table_3时,数据还在hbase
drop删除hbase_table_1时,数据就会被删除,wzy就没有了。
在hbase和hive进行集成的时候要注意
如果hbase正在实时的往里面灌数据,这时候使用hive去分析的话,准确性会下降。
猜你喜欢
- 2024-10-07 Flink1.10集成Hive快速入门(flink集群)
- 2024-10-07 Spark源码阅读:SparkSession类之spark对象的使用
- 2024-10-07 存储过程转hivesql有哪些注意事项
- 2024-10-07 0277-Impala并发查询缓慢问题解决方案
- 2024-10-07 画像笔记25-用户画像应用(10)-用户行为分析
- 2024-10-07 CASE … WHEN和cast类型转换(日志案例分析应用)
- 2024-10-07 Hive 导数据的两种方案(hive导入)
- 2024-10-07 Hive SQL常用命令总结,大数据开发人员按需收藏
- 2024-10-07 手撕数据仓库之「HQL规范篇」(数据仓库 sql)
- 2024-10-07 hive 之前操作脚本汇总(hive shell脚本)
你 发表评论:
欢迎- 07-08Google Cloud Platform 加入支持 Docker 的容器引擎
- 07-08日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 07-08美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- 07-08GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 07-08谷歌推出Cloud Dataproc,缩短集群启动时间
- 07-08Infovista与Google Cloud携手推进射频网络规划革新
- 07-08比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- 07-08BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- 最近发表
-
- Google Cloud Platform 加入支持 Docker 的容器引擎
- 日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 谷歌推出Cloud Dataproc,缩短集群启动时间
- Infovista与Google Cloud携手推进射频网络规划革新
- 比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- NCSA和Google Cloud合作开发AI驱动的网络防御系统,加强泰国网络空间的安全性
- SAP将在沙特阿拉伯 Google Cloud 上推出BTP服务
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)