1.1

2 :搭建Hive环境

内容

2.2

3 

运行环境说明

1.1  硬软件环境

线程,主频2.2G,6G内存

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

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

l  JDK:1.7.0_55 64 bit

l  Hadoop:1.1.2

1.2  机器网络环境

个namenode、2个datanode,其中节点之间可以相互ping通。节点IP地址和主机名分布如下:

序号

IP地址

机器名

类型

用户名

运行进程

10.88.147.221

hadoop1

名称节点

hadoop

NN、SNN、JobTracer

10.88.147.222

hadoop2

数据节点

hadoop

DN、TaskTracer

10.88.147.223

hadoop3

数据节点

hadoop

DN、TaskTracer

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

书面作业1:搭建Hive环境

内容

安装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系列:

位,选择对应安装包进行下载:

下载在本地目录如下图:

2.2.1.2上传mysql安装文件

、2作业周2.1.3.1介绍)上传到/home/hadoop/Downloads 目录下,如下图所示:

2.2.1.3卸载旧的mysql

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

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

rpm -qa | grep -i mysql

可以看到如下图的所示:

说明之前安装了:

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 -e –nodeps 包名

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

如果存在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

删除对应的mysql目录

sudo rm -rf /usr/lib64/mysql

sudo rm -rf /var/lib/mysql

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

sudo rpm -qa | grep -i mysql

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

2.2.1.4安装mysql

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

cd /home/hadoop/Downloads

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

安装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

2.2.1.5设置root密码

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

/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

(2)  跳过验证启动mysql

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

mysqld_safe --skip-grant-tables &

sudo service mysql status

(3)  跳过验证启动MySQL

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

mysql -u root

mysql>use mysql;

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

mysql>flush privileges;

(4)  跳过验证启动MySQL

重启mysql服务并查看状态

sudo service mysql stop

sudo service mysql start

sudo service mysql status

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;

(注意:如果是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;

2.2.2安装Hive

2.2.2.1下载hive安装文件

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

2.2.2.2下载mysql驱动

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

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

、2作业周2.1.3.1介绍)上传到/home/hadoop/Downloads 目录下,如下图所示:

2.2.2.4把mysql驱动放到hive的lib目录下

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

cd /home/hadoop/Downloads

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

2.2.2.5解压缩

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

cd /home/hadoop/Downloads

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

迁移到/usr/local目录下:

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

2.2.2.6配置/etc/profile环境变量

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

sudo vi /etc/profile

使配置文件生效:

source /etc/profile

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

进入hive-0.12.0/conf目录,复制hive-env.sh.templaete为hive-env.sh:

cd /usr/local/hive-0.12.0/conf

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

ls

vi hive-env.sh

分别设置HADOOP_HOME和HIVE_CONF_DIR两个值:

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

复制hive-default.xml.templaete为hive-site.xml

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

sudo vi hive-site.xml

(1)  加入配置项

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

<property>

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

  <value>false</value>

</property>

(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>

(3)  订正错误项

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

<property>

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

  <value>auth</value>

  <des.....

</property>

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

<property>

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

  <value>false</value>

   <desc....>

</property>

2.2.3验证部署

2.2.3.1启动metastore和hiveserver

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

hive --service metastore &

hive --service hiveserver &

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

2.2.3.2在hive中操作

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

hive

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

hive>show tables;

hive>desc test;

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

mysql -uhive -phive

mysql>use hive;

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

问题解决

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

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

/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

(6)  跳过验证启动mysql

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

mysqld_safe --skip-grant-tables &

sudo service mysql status

(7)  跳过验证启动MySQL

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

mysql -u root

mysql>use mysql;

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

mysql>flush privileges;

(8)  跳过验证启动MySQL

重启mysql服务并查看状态

sudo service mysql stop

sudo service mysql start

sudo service mysql status

3.2  hive启动,报CommandNeedRetryException异常

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

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.sh的HADOOP_CLASSPATH配置项,由以前的:

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

修改为:

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

 

3.3  在hive中使用操作语言

启动hive后,使用Hsql出现异常,需要启动metastore和hiveserver

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之前需要启动metastore和hiveserver服务,通过如下命令启用:

hive --service metastore &

hive --service hiveserver &

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

Hadoop第9周练习—Hive部署测试(含MySql部署)的更多相关文章

  1. Hive Server 2 安装部署测试

    Hive 0.11 包含了Hive Server 1 和 Hive Server 2,还包含1的原因是为了做到向下兼容性.从长远来看都会以Hive Server 2作为首选 1. 配置hive ser ...

  2. Hadoop入门第五篇:Hive简介以及部署

    标签(空格分隔): Hadoop Hive hwi 1.Hive简介   之前我一直在Maxcompute上进行大数据开发,所以对数仓这块还算比较了解,在接受Hive的时候基本上没什么大的障碍.所以, ...

  3. 【Hadoop离线基础总结】Hive的安装部署以及使用方式

    Hive的安装部署以及使用方式 安装部署 Derby版hive直接使用 cd /export/softwares 将上传的hive软件包解压:tar -zxvf hive-1.1.0-cdh5.14. ...

  4. Hadoop数据分析平台项目实战(基于CDH版本集群部署与安装)

    1.Hadoop的主要应用场景: a.数据分析平台. b.推荐系统. c.业务系统的底层存储系统. d.业务监控系统. 2.开发环境:Linux集群(Centos64位)+Window开发模式(win ...

  5. 在Hadoop集群上的Hive配置

    1. 系统环境Oracle VM VirtualBoxUbuntu 16.04Hadoop 2.7.4Java 1.8.0_111 hadoop集群master:192.168.19.128slave ...

  6. HDFS部署测试记录(2019/05)

    目录 HDFS部署测试记录 0.HDFS基础知识 1.基本组成结构与文件访问过程 2.NameNode启动时如何维护元数据 3.HDFS文件上传流程 1.系统环境 1.安装大致记录: 2.磁盘分区 3 ...

  7. 【Hadoop离线基础总结】Hive的基本操作

    Hive的基本操作 创建数据库与创建数据库表 创建数据库的相关操作 创建数据库:CREATE TABLE IF NOT EXISTS myhive hive创建表成功后的存放位置由hive-site. ...

  8. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  9. 基于hadoop的数据仓库工具:Hive概述

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点是学习成本低,可以通过类 ...

随机推荐

  1. activiti 介绍

    工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期的业务目标 ...

  2. Chrome Apps將是Google送給微軟的特洛伊木馬?

    今天,Google 發表了 Chrome Apps,不同於之前 web app,此舉是要把 Chrome 瀏覽器升級為真正的 app 平台,將 Chrome OS 發展成一個成熟的作業系統,可以視為 ...

  3. SQL SERVER 2008中输入汉字乱码的问题

    搭建服务器时,系统是英文版windows server 2008 ,安装的中文语言包.安装SqlServer2008 后,数据库中文显示乱码. baidu 后,说是 排序规则 的问题.修改为 Chin ...

  4. Notes for Linux Administration Handbook (1) : Booting and Shutting Down

  5. jquery实现返回基部案例效果

    <!doctype html> <html> <head> <meta charset="gb2312"> <title> ...

  6. hibernateTemplate.find或hibernateTemplate.save()执行操作没有反应,但是有sql语句

    今天使用ssh框架搭建的项目,进行查询和保存操作,使用的是 public Collection<T> getAllEntry() { return this.hibernateTempla ...

  7. 【转】Objective-C Class Dump

    (转自:http://blog.sina.com.cn/s/blog_4431c7610100x15t.html) class dump是一个命令行工具,用来监测存储在Mach-O二进制文件理的Obj ...

  8. 用C#通过反射实现动态调用WebService 告别Web引用

    我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...

  9. 使用ueditor小结

    1. 导入 js: ueditor.config.js ueditor.all.js css/images/plugin: themes lang dialog(可选) third-party(可选) ...

  10. ORACLE 10g 64位下载地址

    http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip http://download.orac ...