之前的文章带大家一起从hadoop最开始的搭建,到最终写一个MapReduce结尾,相信大家也基本了解什么是hadoop。当然了现如今的开发,基本少很少有人写MapReduce,因为写起来太麻烦了,又是map,又是reduce,还要写运行的客户端。程序猿们太喜欢偷懒了,所以hive就出现了
Hive
Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.
是的,你没有看错,hive就是把sql语句转换为我们MapReduce任务的,所以做hive开发完全可以不懂编程,只需要会写sql语句就可以了。
贴一张hive的结构图,大家可以体会以下
image注意
Hive不是为在线事务处理而设计。它最适合用于传统的数据仓库任务
接下来就带大家在CenterOS7
上搭建一下Hive环境
Hive安装有三种模式
嵌入模式:
元熟悉信息被存储在Hive自带的Derby数据库中
只允许创建一个连接
多用于Demo
本地模式:
元数据信息被存储在MySQL数据库中
MySQL数据库与Hive运行在同一台物理机器上
多用于开发和测试
远程模式:
Hive与Mysql安装在不同的操作系统上
在这里就给搭建演示本地模式安装,元数据存在mysql中
第一步
- 准备Hive-2.3.3工具包:点击下载
- 放入linux自己目录下,通过
tar -zxvf xxxxx
命令解压,然后通过以下命令创建一个临时目录mkdir hive_tmpdir
为后面配置做准备
第二步
- 进入conf目录,复制
hive-default.xml.template
为hive-site.xml
文件
cp hive-default.xml.template hive-site.xml
- 配置
hive-site.xml
文件
将所有的${system:java.io.tmpdir}
替换为第一步创建的临时目录hive_tmpdir
如果后面还接的有类似这样引用的变量${},可以直接删除
如:
<property>
<name>hive.exec.local.scratchdir</name>
#<value>${system:java.io.tmpdir}/${system:user.name}</value>
<value>/home/mmcc/hive_tmpdir</value>
</property>
...
然后将hive.metastore.schema.verification
的值设置为false,取消metastore验证,
再将datanucleus.schema.autoCreateTables
设置为true,自动在数据库里建表。
其次配置我们的mysql数据库,关于mysql的安装大家可以自行研究。
依然是在hive-site.xml
中
<property>
<name>javax.jdo.option.ConnectionURL</name> #数据库链接
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value> #数据库驱动名
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value> #数据库账号
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value> #数据库密码
<description>password to use against metastore database</description>
</property>
配置好hive-site.xml
之后保存退出。
第三步
- 将mysql的驱动包放入hive的lib目录下,mysql-5.1.25驱动下载
- 去掉hive里的sl4j的jar包,可能会和hadoop里的冲突(保留log4j-api和log4j-core和log4j-web)
第四步
到这里关于准备配置及一些准备工作就已经完成了,接下来就可以正式进行启动的流程了。首先关闭hadoop的安全模式,避免出现不必要的错误,执行命令hdfs dfsadmin -safemode leave
,然后执行以下命令进行启动。
#启动hive的metastore服务
[root@master bin]# ./hive --service metastore &
#初始化元数据为mysql数据库(只有第一次需要),这一步完成后,在mysql里其实就会生成hive表
[root@master bin]# ./schematool -dbType mysql -initSchema #
#接下来可以直接运行hive了
[root@master bin]# ./hive
然后我们就进入到了hive的命令行模式,就可以做hive的执行操作了。
网友评论