科学配置hive+mysql+hadoop

mysql配置

先前的服务器mysql有一些莫名地故障,于是准备重装。贸然重装肯定是一件愚蠢的事,首先要做的是把原有的mysql卸载干净。但如果你的mysql能正常地工作,那当我没提起这件事。卸载遵循以下步骤:

*运行rpm -qa|grep -i mysql。 显示如下:

*删掉它们,当然之前要停止mysql服务,运行rpm -e --nodeps 包名
*查找之前老版本mysql的目录、并且删除老版本mysql的文件和库,运行find / -name mysql,会出现很多关于mysql的目录,删掉它们。
*run "rm -rf /etc/my.cnf"
*再次查找机器是否安装mysql -->rpm -qa|grep -i mysql

接下来安装mysql,方便起见,采用rpm的安装方式。下载mysql全家桶下载地址,然后解压,安装=》sudo rpm -ivh MySQL-*。顺便转一下配置文件=》sudo cp /usr/share/mysql/my-large.cnf /etc/my.cnf。
开启mysql服务=》 service mysql start。
设置用户密码=》 sudo /usr/bin/mysqladmin -u root password ‘123’
进入mysql=》mysql -uroot -p123
创建mysql的hive用户=》 CREATE USER ‘hive’@’localhost’ IDENTIFIED BY “123”
创建数据库=》create database hive;
赋予权限=》 grant all on hive. to hive@’%’ identified by ‘hive’; grant all on hive. to hive@’localhost’ identified by ‘hive’; flush privileges;
退出mysql
顺便可以验证下hive用户=》mysql -uhive -phive

hadoop安装


不过注意一个问题:之前hadoop start起来没问题,也没有仔细看日志,但是运行hadoop命令总是遇到connection refused的问题,之前以为防火墙的原因。后来发现是用户bashrc的环境配置默认hadoop是另一个版本的,所以hadoop的命令工具来自另个hadoop。这个错误原因有点离谱,但还是挺难发现的。

hive安装与配置

安装配置

首先下载 hive1.2.1=》 nohup wget http://mirrors.hust.edu.cn/apache/hive/stable/apache-hive-1.2.1-bin.tar.gz &
解压 tar -zxvf ..
配置环境变量 .bashrc=>
export HIVE_HOME=/home/feiwang/hive-2.0
export HIVE_CONF_DIR=/home/feiwang/hive-2.0/conf
export PATH=$PATH:$HIVE_HOME/bin
source .bashrc
修改hive配置文件,将默认文件mv成hive-site.xml,不是hive-default.xml!之前一直读取配置有问题就是这个原因。
主要修改以下参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<property> 
<name>javax.jdo.option.ConnectionURL </name>
<value>jdbc:mysql://localhost:3306/hive </value>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName </name>
<value>com.mysql.jdbc.Driver </value>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword </name>
<value>hive </value>
</property>

<property>
<name>hive.hwi.listen.port </name>
<value>9999 </value>
<description>This is the port the Hive Web Interface will listen on </descript ion>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>Username to use against metastore database</description>
</property>

<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>

<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
<description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive/local</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/hive/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>

下载jdbc的jar包=》wget http://115.156.188.231/cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.40.tar.gz

拷贝mysql-connector-java-5.1.40-bin.jar 到hive 的lib下面
mv mysql-connector-java-5.1.40-bin.jar /root/feiwang/hive-2.0/lib/

启动元数据 =》bin/hive –service metastore &

验证

运行 hive命令,创建表:

进入mysql会发现hive数据库自动生成了很多表

进入hadoop的hdfs会发现也有两个文件夹生成了
Found 2 items
drwxr-xr-x - root supergroup 0 2016-11-24 21:43 /user/hive/warehouse/diablo
drwxr-xr-x - root supergroup 0 2016-11-24 19:45 /user/hive/warehouse/kzx

简单介绍下hive

Hive是运行在Hadoop之上的数据仓库,将结构化的数据文件映射为一张数据库表,提供简单类SQL查询语言,称为HQL,并将SQL语句转换成MapReduce任务运。有利于利用SQL语言查询、分析数据,适于处理不频繁变动的数据。Hive底层可以是HBase或者HDFS存储的文件。两者都是基于Hadoop上不同的技术,相互结合使用,可处理企业中不同类型的业务,利用Hive处理非结构化离线分析统计,利用HBase处理在线查询。
Hive三种元数据存储方式:
1>.本地derby存储,只允许一个用户连接Hive,适用于测试环境
2>.本地/远程MySQL存储,支持多用户连接Hive,适用于生产环境