hadoop入门之与hive及hbase集成配置

 公司最近要做运营分析系统,刚接触hadoop不久,至少先搞清楚hadoop生态系统中的工具,搞了2个星期,现在记录一些关于hive和hbase和hadoop 集成的配置。

 在Hadoop部署配置笔记 中先搞明白了hadoop的集群部署,现在又来做和hive及hbase 的集成,我的终极目标是 hbase 和phoenix 集成,使用phoenix 用java 代码采用jdbc 方式查询hbase ,搞明白presto 和 hive 集成 及 spark 和 hbase 集成,那么hive 和hbase的配置必不可少的要学会它;

         一、准备工作

                 apache  hive1.0.1

           apache hbase1.0.1.1
mysql 5.17

         二、环境配置  

 如果没有vim命令可以先用yum install vim 安装下 ,mysql 的安装就不说了,网上有很多,我这里配置了maven 的环境变量是为了编译presto和spark,此处hive 我只安装在namenode上,只是测试。

             

 vim /etc/profile

export JAVA_HOME=/java/jdk1.8.0_65
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/home/hadoop/hadoop
export HIVE_HOME=/home/hadoop/hive
export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:${MAVEN_HOME}/bin
export HBASE_HOME=/home/hadoop/hbase
export PATH=$PATH:$HBASE_HOME/bin


   三、配置文件

    在修改配置文件之前 还是要先创建一些hive需要使用的文件夹,这之前在mysql 数据库中先创建一个数据库,我这数据库名字使用hive,这个mysql数据库是存放hive的元数据,也可以使用其他关系型数据库,我这使用mysql,将mysql-connector-java-5.1.38-bin.jar拷贝到/home/hadoop/hive/lib下,因为需要mysql驱动去创建hive的元数据

 hive 配置文件配置  

mkdir /home/hadoop/hive/warehouse && mkdir /home/hadoop/hive/tmp 
cp /home/hadoop/mysql-connector-java-5.1.38-bin.jar /home/hadoop/hive/lib  
vim / home/hadoop/hive/conf/hive-site.xml
<span style="font-family: Arial, Helvetica, sans-serif;"><pre name="code" class="plain"><?xml version="1.0" encoding="UTF-8" standalone="no"?></span>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://master:3306/hive</value>
        </property>
<property> 
   <name>javax.jdo.option.ConnectionDriverName</name> 
<value>com.mysql.jdbc.Driver</value> 
<description>驱动名</description> 
</property>
 <property> 
<name>javax.jdo.option.ConnectionUserName</name> 
<value>hive</value> 
<description>用户名</description>
 </property>
 <property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>hive</value> 
<description>密码</description> 
</property> 
<property> 
<name>hive.metastore.warehouse.dir</name>
 <value>hdfs://master:9000/home/hadoop/hive/warehouse</value> 
<description>数据路径(相对hdfs)</description> 
</property> 
<property> 
<name>hive.exec.scratchdir</name> 
<value>hdfs://master:9000/home/hadoop/hive/warehouse</value>
 </property>
 <property>
 <name>hive.querylog.location</name> 
<value>/home/hadoop/hive/log</value> 
</property> 
<property>
 <name>hive.aux.jars.path</name>
 <value>file:///home/hadoop/hive/lib/hive-hbase-handler-1.2.1.jar, file:///home/hadoop/hbase/lib/protobuf-java-2.5.0.jar, file:///home/hadoop/hbase/lib/hbase-common-1.0.1.1.jar, file:///home/hadoop/hbase/lib/hbase-client-1.0.1.1.jar, file:///home/hadoop/hbase/lib/zookeeper-3.4.6.jar, file:///home/hadoop/hbase/lib/guava-12.0.1.jar</value>
 </property> 
<property> 
<name>hive.metastore.uris</name> 
<value>thrift://192.168.200.96:9083</value>
 <description>运行hive得主机地址及端口</description>
 </property>
</configuration>


 

 

修改日志配置文件

cp hive-log4j.properties.template hive-log4j.properties
vim hive-log4j.properties
 
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter






重点说一下

hive.aux.jars.path ,这个是运行hive的cli时引入的jar包,如果要使用hive创建hbase的表,那么就需要引入 上面的jar包
</pre><p></p>hbase 配置文件配置<p>hbase-site.xml</p><p></p><pre name="code" class="html"><configuration>
 <property>
  <name>hbase.rootdir</name>
  <value>hdfs://master:9000/hbase</value>
 </property>

 <property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
 </property>

 <property>
   <name>hbase.zookeeper.quorum</name>
   <value>master,node1,node2</value>
 </property>

 <property>
   <name>hbase.zookeeper.property.dataDir</name>
   <value>/home/hadoop/hadoop/zookeeper</value>
 </property>

 <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>

  <property>
        <name>hbase.coprocessor.user.region.classes</name>
        <value>org.apache.hadoop.hbase.coprocessor.AggregateImplementation</value>
</property>


hbase-env.sh 更改jdk环境变量

 

export JAVA_HOME=/java/jdk1.8.0_65/


然后将hbase 文件夹分发node1 和node 2上

scp -r hbase hadoop@node1:/home/hadoop

scp -r hbase hadoop@node2:/home/hadoop


按照上面简单配置hbase 和hive 就配置完了,不是说整合吗?哪里整合了,下面继续


四、 启动hbase 和hive 

[hadoop@master bin]$  start-hbase.sh

查看hbase 启动日志 如果里面没有乱七八糟的错误堆栈信息,那么在去看下hbase的进程启动情况

master 进程

[hadoop@master bin]$ jps
19881 NameNode
23118 JobTracker
10233 HMaster
19188 Jps
14066 SecondaryNameNode

node1 和node2 上

[hadoop@node1 ~]$ jps
21685 HRegionServer
21608 HQuorumPeer
19581 DataNode
21748 Jps
19679 TaskTracker

如果进程都启动了,在master 上

执行hbsae shell命令,进入hbase控制台

输入: hbase shell 进入控制台,然后输入list 显示hbase 下的表 说明hbase 部署成功了



用hbase 去创建表比较麻烦不如sql 语句来的直观,下面我们在hive 里面进行创建hbase 表的实验

hive 启动

此次我们只是使用hive的元数据,所以启动matestore 服务,加&是在后台启动

hive --service metastore &
</pre><pre name="code" class="plain">ps aux|grep hive 



hive metastore 启动后会在mysql 数据库初始化之前创建的hive 数据库



然后进入hive 命令行进行操作

hive

show tables;
输入 show tables ; 查看当前默认数据库下的表


输入下面建表语句,创建 hive 和 hbase 关联的表,如果不出现异常,则说明hive 和 hbase 已经可以关联了

CREATE  TABLE default.order4(
id BIGINT,
code STRING,
name STRING,
status STRING,
quantity FLOAT,
ordertype STRING,
detailsize FLOAT,
companyid BIGINT,
creater STRING,
create_time DATE,
updater STRING,
update_time DATE
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,data:code,data:name,data:status,data:quantity,data:ordertype,data:detailsize,data:companyid,data:creater,data:create_time,data:updater,data:update_time")
TBLPROPERTIES("hbase.table.name" = "order4")
;

我们可以导入数据进行测试下,

先put 一个 txt 文件到 hdfs 中

hadoop dfs -put 111.txt /tmp


111.txt文件内容为,随便搞几条


 

使用hbase  ImportTsv 命令进行导入

导入形式分为2种:

 直接导入: 

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv  -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY,data:code,data:name,data:status,data:quantity,data:ordertype,data:detailsize,data:companyid,data:creater,data:create_time,data:updater,data:update_time  order4 /tmp/111.txt

HBASE_ROW_KEY 这个是rowkey 后面跟着是烈簇和列格式为 colFamily:col,....

-Dimporttsv.separator=',' 这个是使用逗号分隔数据   
</pre><pre name="code" class="plain">后面结尾处order4 是表名 和刚才 put 到hdfs 中的文件

bulk load 方式:

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv  -Dimporttsv.separator=',' -Dimporttsv.bulk.output=/home/hadoop/  -Dimporttsv.columns=HBASE_ROW_KEY,data:code,data:name,data:status,data:quantity,data:ordertype,data:detailsize,data:companyid,data:creater,data:create_time,data:updater,data:update_time  order4 /tmp/111.txt   这个是先生成hfile文件
</pre><pre name="code" class="html">然后在通过:
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /home/hadoop/order4 order4 在将hfile导入到hbase中


然后就是一大堆 map执行输出的日志 后面打印的结果 有一行是badLine 是0 说明就导入成功了


然后进入hive 命令行 查看数据

select * from order3 limit 10;










                          

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值