1.环境及软件介绍:CentOS-6.4-x86_64-bin-DVD1.iso hadoop-2.2.0 hive-0.12.0 mysql(为CentOS6.4自带版本为MySQL5.1.66).
2.MySQL的安装和卸载
使用rpm –qa|grep mysql查看已安装的数据库软件
卸载MySQL yum remove mysqlmysql-server
重新安装 yum –y install mysqlmysql-server
3.MYSQL数据库基本配置
设置开机自启动首次使用设定密码
若上述设定无效,可使用下列方法强制设定
4.修改并添加 Vi /etc/my.cnf 文件的内容
注:红框中的信息有则修改,无则添加。
5. 将 MySQL 的 jdbc 驱动包放入 hive 的 lib 下 , 若所有者不是 Hadoop ,要修改为 Hadoop 。
注:驱动包版本与 MySQL 版本不符,但可以用。驱动包 5.1 的可以支持 MySQL4.1-6.0. 但还是越接近 MySQL 越好, bug 较少。
6. 创建数据库并设置编码。
Create database hive;
Create database hive;
alterdatabase hive character set latin1;7.安装hive,进入软件所在目录。使用命令tar –zvxf hive-0.12.0.tar.gz
8.将hive-0.12.0主目录修改为hiv.命令为mv hive-0.12.0 hive (这一步可以省略。)
9. 修改配置文件。配置文件在 hive 主目录的 conf 文件夹下。操作命令如下
cp hive-env.sh.template hive-env.sh
chown hadoop:hadoop hive-env.sh
使用vi hive-env.sh添加如下信息
并继续使用 cp 命令产生 hive-default.xml 和 hive-site.xml
注以上修改的文件所用者要是 hadoop 用户
10.在hive-site.xml添加如下信息
注: 1 为主机名,最好为 localhost, 其他的有时会不识别
2.为在MySQL中创建的专属数据库名
3.为用户名,最好直接是root用户。这个无影响
4.MySQL的登录密码。
11. 切换到 Hadoop 用户下,启动Hadoop。查看 Hadoop 是否正常12. 执行
进入 hive
./hive( 有警告但可以忽略 )
使用hive命令进行操作
至此基于MySQL的hive变搭建成功了。
13. 常见错误更改。
SLF4J: Failed to load class"org.slf4j.impl.StaticLoggerBinder".
Unable toinstantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
atorg.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:223)
atorg.slf4j.LoggerFactory.bind(LoggerFactory.java:120)
atorg.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)
. . . . . . . .
出现的原因
1.没有找到合适的绑定SLF4J,无法载入到内存
2.slf4j是所谓的门面模式,提供了一个接口,出现上面的异常是因为jar冲突了
解决的办法,根据报的异常下载新的合适的 slf4j-nop.jar 。根据我的错误我下的是 slf4j-1.7.5.tar.gz 。具体如下先删除旧的,再添加新的。
14. 基本操作练习。
向hive中添加数据。(空格长度就是\t就是tab)
之所以会出现四行null。是因为空格不是一个tab长度。