CentOS6安装hive-2.1.1

hive

  这里简单说明一下,好对大家配置hive有点帮助。hive是建立在hadoop上的,当然,你如果只搭建hive也没用什么错。说简单一点,hadoop中的mapreduce调用如果面向DBA的时候,那么问题也就显现了,因为不是每个DBA都能明白mapreduce的工作原理,如果为了管理数据而需要学习一门新的技术,从现实生活中来说,公司又需要花钱请更有技术的人来了。

hive

  开个玩笑,hadoop是为了存储数据和计算而推广的技术,而和数据挂钩的也就属于数据库的领域了,所以hadoop和DBA挂钩也就是情理之中的事情,在这个基础之上,我们就需要为了DBA创作适合的技术。

  hive正是实现了这个,hive是要类SQL语句(HiveQL)来实现对hadoop下的数据管理。hive属于数据仓库的范畴,那么,数据库和数据仓库到底有什么区别了,这里简单说明一下:数据库侧重于OLTP(在线事务处理),数据仓库侧重OLAP(在线分析处理);也就是说,例如mysql类的数据库更侧重于短时间内的数据处理,反之。

无hive:使用者.....->mapreduce...->hadoop数据(可能需要会mapreduce)

有hive:使用者...->HQL(SQL)->hive...->mapreduce...->hadoop数据(只需要会SQL语句)

安装hive

1.安装在hadoop的namenode上,拷贝安装文件到linux中/usr/local/hive/apache-hive-2.1.1-bin.tar.gz

解压:

tar –zxvf apache-hive-2.1.1-bin.tar.gz

修改文件名

mv apache-hive-2.1.1-bin hive-2.1.1

2.配置环境变量

vi /etc/profile

编辑(i  进入编辑模式,添加如下信息 ESC 退出编辑模式 :wq   保存并退出   :q!  退出不保存)

#hive

export HIVE_HOME=/usr/local/hive/hive-21.1

export PATH=$PATH:$HIVE_HOME/bin

保存后使其生效:

source /etc/profile

测试是否安装成功

执行

hive --version

安装mysql作为hive的Metastore

首先检查mysql是否已安装:

rpm -qa | grep -i mysql

结果:

mysql-libs-5.1.71-1.el6.x86_64

删除已安装的mysql

yum -y remove mysql-libs*

解压安装MySQL                              

tar xvf MySQL-5.5.49-1.linux2.6.x86_64.rpm-bundle.tar



rpm -ivh MySQL-server-5.5.49-1.linux2.6.x86_64.rpm

rpm -ivh MySQL-devel-5.5.49-1.linux2.6.x86_64.rpm

rpm -ivh MySQL-client-5.5.49-1.linux2.6.x86_64.rpm

 

启动mysql

service mysql start

首次安装时,默认密码为空,可以使用如下命令修改root密码

mysqladmin -u root  password mypassword

mypassword 为你设定的新密码

登录mysql

mysql -u root –p

 

rpm包安装的MySQL是不会安装/etc/my.cnf文件的,解决方法,只需要复制/usr/share/mysql目录下的my-huge.cnf 文件到/etc目录,并改名为my.cnf即可

cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

 

mysql默认不可以远程访问,设置远程访问

--GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

上面这句远程访问不需要密码,如果需要密码使用下面这句

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'root' WITH GRANT OPTION;

 

使权限生效:

FLUSH PRIVILEGES;

 

设置etc/my.cnf文件,使binlog_format=mixed

vi etc/my.cnf

将注释掉的binlog_format=mixed这一行前面的注释去掉然后保存,重启mysql即可

service mysql restart

配置hive

1.在hdfs中新建目录/user/hive/warehouse

hdfs dfs –mkdir /tmp

hdfs dfs –mkdir /user

hdfs dfs –mkdir /user/hive

hdfs dfs –mkdir /user/hive/warehouse
hadoop fs -chmod g+w /tmp

hadoop fs -chmod g+w /user/hive/warehouse

2.将mysql的驱动jar包mysql-connector-java-5.1.7-bin.jar拷入hive的lib目录下面

复制mysql的驱动程序到hive/lib下面(这里已经拷贝好了)

3.进入hive的conf目录下面复制一下hive-default.xml.template名子命名为:hive-site.xml

cp hive-default.xml.template hive-site.xml
<property>

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

    <value>jdbc:mysql://192.168.188.1: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>sa</value>

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

  </property>



  <property>

    <name>hive.exec.local.scratchdir</name>

    <value>/usr/local/hive/hive-2.1.1/tmp</value>

    <description>Local scratch space for Hive jobs</description>

  </property>

  <property>

    <name>hive.downloaded.resources.dir</name>

    <value>/usr/local/hive/hive-2.1.1/tmp/resources</value>

    <description>Temporary local directory for added resources in the remote file system.</description>

  </property>

  <property>

    <name>hive.querylog.location</name>

    <value>/usr/local/hive/hive-2.1.1/tmp</value>

    <description>Location of Hive run time structured log file</description>

  </property>

  <property>

    <name>hive.server2.logging.operation.log.location</name>

    <value>/usr/local/hive/hive-2.1.1/tmp/operation_logs</value>

    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>

  </property>

 

使用schematool 初始化metastore的schema:

schematool -initSchema -dbType mysql

运行hive

Hive shell

----------------------------------------

错误总结:

1.在运行hive之前hadoop集群必须开启,否则回报拒绝连接

2.这里不得不说一下,如果你的 schematool -dbType mysql -initSchema 并没有执行成功怎么办,

在hive-site.xml中配置的 <value>jdbc:mysql://192.168.188.1:3306/hive?createDatabaseIfNotExist=true</value>

192.168.188.1:表示的是Windows是ip地址,是要连接Windows下的数据库,在数据库中创建hive数据库。

hive数据库一定不能存在,如果存在请修改配置将hive变成其他名字-例如hive01,否则会一直初始化不成功。

hive-site.xml中的配置只需要写下面内容即可,

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://192.168.188.1:3306/hive</value>(mysql地址192.168.188.1)
        </property>

        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>(mysql的驱动)
                <value>com.mysql.jdbc.Driver</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionUserName</name>(用户名)
                <value>root</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionPassword</name>(密码)
                <value>123</value>
        </property>

        <property>
                <name>hive.metastore.schema.verification</name>
                <value>false</value>
        </property>
</configuration>

3.出现HiveMetaException异常,有可能配置数据库写错了,我的是ip地址写错了。

4.Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)

详细错误描述

问题解决

以上错误查看mysql是否已经创建了metastore batabase, 如果创建,直接删除即可。

Metastore connection URL:后面配置的数据库名字,例如我的是hive。

这里的配置都在hive-site.xml中可以修改。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脸ル粉嘟嘟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值