• Hadoop第9周练习—Hive部署测试(含MySql部署)


    1  运行环境说明... 3

    1.1 硬软件环境... 3

    1.2 器网络环境... 3

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

    2.1 书面作业1内容... 3

    2.2 搭建过程... 4

    2.2.1   安装MySql数据库... 4

    2.2.2   安装Hive. 10

    2.2.3   验证部署... 15

    3 问题解决... 17

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

    3.2 hive启动,报CommandNeedRetryException异常... 19

    3.3 hive中使用操作语言... 20

     

    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

    NNSNNJobTracer

    2

    10.88.147.222

    hadoop2

    数据节点

    hadoop

    DNTaskTracer

    3

    10.88.147.223

    hadoop3

    数据节点

    hadoop

    DNTaskTracer

    所有节点均是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 -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

    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.4mysql驱动放到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.2hive中操作

    登录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]

  • 相关阅读:
    启动Docker容器
    Docker 删除容器
    11.18数据库认证
    10.17权限认证
    9.16角色认证
    8.13数据库认证
    6.11Realm简介
    5.8认证流程分析
    4.7固定信息认证
    20张图表达程序员的心酸
  • 原文地址:https://www.cnblogs.com/shishanyuan/p/4205186.html
Copyright © 2020-2023  润新知