你好,游客 登录
背景:
阅读新闻

Hive部署测试(含MySql部署)

[日期:2015-01-13] 来源:博客园-原创精华区   作者: 石山园 [字体: ]

1   运行环境说明

1.1   硬软件环境

1.2   器网络环境

2   书面作业 1 :搭建 Hive 环境

2.1   书面作业 1 内容

2.2   搭建过程

2.2.1   安装 MySql 数据库

2.2.2   安装 Hive

2.2.3   验证部署

3   问题解决

3.1  设置 mysql 数据库 root 用户密码报错

3.2 hive 启动,报 CommandNeedRetryException 异常

3.3  hive 中使用操作语言

1   运行环境说明

1.1   硬软件环境

l   主机操作系统: Windows 64 bit ,双核 4 线程,主频 2.2G6G 内存

l   虚拟软件: VMware® Workstation 9.0.0 build-812388

l   虚拟机操作系统: CentOS 64 位,单核, 1G 内存

l   JDK1.7.0_55 64 bit

l   hadoop1.1.2

1.2   机器网络环境

集群包含三个节点: 1namenode2datanode ,其中节点之间可以相互 ping 通。节点 IP 地址和主机名分布如下:

序号

IP 地址

机器名

类型

用户名

运行进程

1

10.88.147.221

hadoop1

名称节点

hadoop

NN SNNJobTracer

2

10.88.147.222

hadoop2

数据节点

hadoop

DN TaskTracer

3

10.88.147.223

hadoop3

数据节点

hadoop

DN TaskTracer

所有节点均是 CentOS6.5 64bit 系统,防火墙均禁用,所有节点上均创建了一个 hadoop 用户,用户主目录是 /usr/hadoop 。所有节点上均创建了一个目录 /usr/local/hadoop ,并且拥有者是 hadoop 用户。

2   书面作业 1 :搭建 Hive 环境

2.1   书面作业 1 内容

安装 Hive ,有条件的同学按本地独立模式或远程模式安装,将安装过程和最后测试成功的界面抓图提交。

2.2   搭建过程

2.2.1 安装 MySql 数据库

2.2.1.1 下载 mysql 安装文件

下载地址: http://dev.mysql.com/downloads/mysql/#downloads ,使用系统为 CentOS 选择 Red Hat Enterprise Linux/Oracle 系列:

clip_image002

操作系统为 64 位,选择对应安装包进行下载:

clip_image004

clip_image006

clip_image008

下载在本地目录如下图:

clip_image010

2.2.1.2 上传 mysql 安装文件

把下载的 mysql 安装包,使用 SSH Secure File Transfer 工具(第 12 作业周 2.1.3.1 介绍)上传到 /home/hadoop/Downloads 目录下,如下图所示:

clip_image012

2.2.1.3 卸载旧的 mysql

(1)   查找以前是否安装有 mysql

使用命令查看是否已经安装过 mysql

rpm -qa | grep -i mysql

可以看到如下图的所示:

clip_image014

说明之前安装了:

MySQL-client-5.6.21-1.el6.x86_64

MySQL-server-5.6.21-1.el6.x86_64

MySQL-devel-5.6.21-1.el6.x86_64

如果没有结果,可以进行 mysql 数据库安装

(2)   停止 mysql 服务、删除之前安装的 mysql

停止 mysql 服务、删除之前安装的 mysql 删除命令: rpm -enodeps 包名

sudo rpm -ev MySQL-server-5.6.21-1.el6.x86_64

sudo rpm -ev MySQL-devel-5.6.21-1.el6.x86_64

sudo rpm -ev MySQL-client-5.6.21-1.el6.x86_64

clip_image016

如果存在 CentOS 自带 mysql-libs-5.6.21-1.el6.x86_64 使用下面的命令卸载即可

sudo rpm -ev --nodeps mysql-libs-5.6.21-1.el6.x86_64

(3)   查找之前老版本 mysql 的目录并且删除老版本 mysql 的文件和库

sudo find / -name mysql

clip_image018

删除对应的 mysql 目录

sudo rm -rf /usr/lib64/mysql

sudo rm -rf /var/lib/mysql

clip_image020

(4)   再次查找机器是否安装 mysql

sudo rpm -qa | grep -i mysql

无结果,说明已经卸载彻底、接下来直接安装 mysql 即可

clip_image022

2.2.1.4 安装 mysql

进入安装文件的目录,安装 mysql 服务端

cd /home/hadoop/Downloads

sudo rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm

clip_image024

安装 mysql 客户端、 mysql-devel

sudo rpm -ivh MySQL-client-5.6.21-1.el6.x86_64.rpm

sudo rpm -ivh MySQL-devel-5.6.21-1.el6.x86_64.rpm

clip_image026

2.2.1.5 设置 root 密码

CentOS6.5 下安装 mysql 设置 root 密码时,出现如下错误:

clip_image028

/usr/bin/mysqladmin: connect to server at 'localhost' failed

error: 'Access denied for user 'root'@'localhost' (using password: NO)'

可以进入安全模式进行设置 root 密码

(1)   停止 mysql 服务

使用如下命令停止 mysql 服务:

sudo service mysql stop

sudo service mysql status

clip_image030

(2)   跳过验证启动 mysql

使用如下命令验证启动 mysql ,由于 & 结尾是后台运行进程,运行该命令可以再打开命令窗口或者 Ctr+C 继续进行下步操作:

mysqld_safe --skip-grant-tables &

sudo service mysql status

clip_image032

(3)   跳过验证启动 MySQL

验证 mysql 服务已经在后台运行后,执行如下语句,其中后面三条命令是在 mysql 语句:

mysql -u root

mysql>use mysql;

mysql>update user set password = password('root') where user = 'root';

mysql>flush privileges;

clip_image034

(4)   跳过验证启动 MySQL

重启 mysql 服务并查看状态

sudo service mysql stop

sudo service mysql start

sudo service mysql status

clip_image036

2.2.1.6 设置 hive 用户

进入 mysql 命令行,创建 hive 用户并赋予所有权限:

mysql -uroot -proot

mysql>create user 'hive' identified by 'hive';

mysql>grant all on *.* TO 'hive'@'%' with grant option;

mysql>flush privileges;

clip_image038

(注意:如果是 root 第一次登录数据库,需要重新设置一下密码,所报异常信息如下: ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

2.2.1.7 创建 hive 数据库

使用 hive 用户登录,创建 hive 数据库:

mysql -uhive -phive

mysql>create database hive;

mysql>show databases;

clip_image040

2.2.2 安装 Hive

2.2.2.1 下载 hive 安装文件

可以到 Apache 基金 hive 官网 http://hive.apache.org/downloads.html ,选择镜像下载地址: http://mirrors.cnnic.cn/apache/hive/ 下载一个稳定版本,如下图所示:

clip_image042

2.2.2.2 下载 mysql 驱动

mysql 官网进入下载页面: http://dev.mysql.com/downloads/connector/j/ ,选择所需要的版本进行下载,这里下载的 zip 格式的文件

clip_image044

2.2.2.3 上传 mysql 安装文件和 mysql 驱动

把下载的 hive 安装包和 mysql 驱动包,使用 SSH Secure File Transfer 工具(第 12 作业周 2.1.3.1 介绍)上传到 /home/hadoop/Downloads 目录下,如下图所示:

clip_image046

2.2.2.4 mysql 驱动放到 hivelib 目录下

把下载的 hive 安装包和 mysql 驱动包,使用

cd /home/hadoop/Downloads

cp mysql-connector-java-5.1.34-bin.jar /usr/local/hive-0.12.0/lib

clip_image048

2.2.2.5 解压缩

到上传目录下,用如下命令解压缩 hive 安装文件:

cd /home/hadoop/Downloads

tar -zxvf hive-0.12.0-bin.tar.gz

clip_image050

迁移到 /usr/local 目录下:

sudo mv hive-0.12.0-bin /usr/local/hive-0.12.0

clip_image052

2.2.2.6 配置 /etc/profile 环境变量

使用如下命令打开 /etc/profile 文件:

sudo vi /etc/profile

clip_image054

clip_image056

使配置文件生效:

source /etc/profile

clip_image058

2.2.2.7 设置 hive-env.sh 配置文件

进入 hive-0.12.0/conf 目录,复制 hive-env.sh.templaetehive-env.sh

cd /usr/local/hive-0.12.0/conf

cp hive-env.sh.template hive-env.sh

ls

vi hive-env.sh

clip_image060

分别设置 HADOOP_HOMEHIVE_CONF_DIR 两个值:

clip_image062

2.2.2.8 设置 hive-site.xml 配置文件

复制 hive-default.xml.templaetehive-site.xml

cp hive-default.xml.template hive-site.xml

sudo vi hive-site.xml

clip_image064

(1)   加入配置项

默认 metastore 在本地,添加配置改为非本地

<property>

<name>hive.metastore.local</name>

<value>false</value>

</property>

clip_image066

(2)   修改配置项

hive 默认为 derby 数据库,需要把相关信息调整为 mysql 数据库

<property>

<name>hive.metastore.uris</name>

  <value> thrift://hadoop1:9083 </value>

<description>Thrift URI for the remote metastore. ...</description>

</property>

<property>

<name>javax.jdo.option.ConnectionURL</name>

  <value> jdbc:mysql://hadoop1: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> hive< /value>

<description>username to use against metastore database</description>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

  <value> hive </value>

<description>password to use against metastore database</description>

</property>

clip_image068

clip_image070

(3)   订正错误项

在配置文件 2000 行左右配置项 hive.server2.thrift.sasl.qop 原来为 <value>auth</auth> ,按照如下进行修改:

<property>

<name>hive.server2.thrift.sasl.qop</name>

    <value>auth</value>

<des.....

</property>

clip_image072

并把 hive.metastore.schema.verification 配置项值修改为 false

<property>

<name>hive.metastore.schema.verification</name>

  <value> false </value>

<desc....>

</property>

clip_image074

2.2.3 验证部署

2.2.3.1 启动 metastorehiveserver

在使用 hive 之前需要启动 metastorehiveserver 服务,通过如下命令启用:

hive --service metastore &

hive --service hiveserver &

clip_image076

启动用通过 jps 命令可以看到两个进行运行在后台

clip_image078

2.2.3.2 hive 中操作

登录 hive ,在 hive 创建表并查看该表,命令如下:

hive

hive>create table test(a string, b int);

hive>show tables;

hive>desc test;

clip_image080

登录 mysql ,在 TBLS 表中查看新增 test 表:

mysql -uhive -phive

mysql>use hive;

mysql>select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;

clip_image082

3   问题解决

3.1   设置 mysql 数据库 root 用户密码报错

CentOS6.5 下安装 mysql 设置 root 密码时,出现如下错误:

clip_image028[1]

/usr/bin/mysqladmin: connect to server at 'localhost' failed

error: 'Access denied for user 'root'@'localhost' (using password: NO)'

(5)   停止 mysql 服务

使用如下命令停止 mysql 服务:

sudo service mysql stop

sudo service mysql status

clip_image030[1]

(6)   跳过验证启动 mysql

使用如下命令验证启动 mysql ,由于 & 结尾是后台运行进程,运行该命令可以再打开命令窗口或者 Ctr+C 继续进行下步操作:

mysqld_safe --skip-grant-tables &

sudo service mysql status

clip_image032[1]

(7)   跳过验证启动 MySQL

验证 mysql 服务已经在后台运行后,执行如下语句,其中后面三条命令是在 mysql 语句:

mysql -u root

mysql>use mysql;

mysql>update user set password = password('root') where user = 'root';

mysql>flush privileges;

clip_image034[1]

(8)   跳过验证启动 MySQL

重启 mysql 服务并查看状态

sudo service mysql stop

sudo service mysql start

sudo service mysql status

clip_image036[1]

3.2   hive 启动,报 CommandNeedRetryException 异常

启动 hive 时,出现 CommandNeedRetryException 异常,具体信息如下:

clip_image084

Exception in thread "main" java.lang.NoClassDefFoundError:org/apache/hadoop/hive/ql/CommandNeedRetryException

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:270)

at org.apache.hadoop.util.RunJar.main(RunJar.java:149)

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.CommandNeedRetryException

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

由于以前使用 hadoop 时,修改 hadoop-env.shHADOOP_CLASSPATH 配置项,由以前的:

export HADOOP_CLASSPATH=/usr/local/hadoop-1.1.2/myclass

修改为:

export HADOOP_CLASSPATH= $HADOOP_CLASSPATH: /usr/local/hadoop-1.1.2/myclass

clip_image086

clip_image088

3.3   hive 中使用操作语言

启动 hive 后,使用 Hsql 出现异常,需要启动 metastorehiveserver

clip_image090

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

在使用 hive 之前需要启动 metastorehiveserver 服务,通过如下命令启用:

hive --service metastore &

hive --service hiveserver &

clip_image076[1]

启动用通过 jps 命令可以看到两个进行运行在后台

clip_image078[1]

原文链接:http://www.cnblogs.com/shishanyuan/p/4205186.html





收藏 推荐 打印 | 录入: | 阅读:
相关新闻       Hive 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款