hadoop集群安装Hive

hadoop集群安装Hive

1.准备

CentOS7+hadoop2.8.0+hive2.1.1

1.1安装hadoop

参考链接: https://blog.csdn.net/qq_39615245/article/details/83049123

有三台虚拟机,以 vm1,vm2,vm3代替,vm1位namenode,其他两个为datanade

1.2下载hive安装包

下载链接: http://mirror.bit.edu.cn/apache/hive/stable-2/apache-hive-2.1.1-bin.tar.gz

1.3准备mysql数据库

此处新建一台虚拟机,命名为docker,通过docker安装mysql,IP地址为:192.168.191.131

 

1.3.1 安装docker

参考链接: https://blog.csdn.net/qq_39615245/article/details/82710100

1.3.2 通过docker安装mysql

通过docker拉取mysql镜像

docker pull mysql:5.6

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql,标签为5.6的镜像。

docker images |grep mysql

mysql               5.6                 2c0964ec182a        3 weeks ago         329 MB

运行容器

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.621cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e

命令说明:

查看容器启动情况-p 3306:3306: 将容器的 3306 端口映射到主机的 3306 端口。

-v -v $PWD/conf:/etc/mysql/conf.d: 将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。

-v $PWD/logs:/logs: 将主机当前目录下的 logs 目录挂载到容器的 /logs。

-v $PWD/data:/var/lib/mysql : 将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

-e MYSQL_ROOT_PASSWORD=123456: 初始化 root 用户的密码。

查看镜像启动状态:

runoob@runoob:~/mysql$ docker ps

CONTAINER ID    IMAGE         COMMAND                  ...  PORTS                    NAMES21cb89213c93    mysql:5.6    "docker-entrypoint.sh"    ...  0.0.0.0:3306->3306/tcp   mymysql

安装成功:用户名root 密码:123456 本地可连接

 

2.安装hive

2.1 上传并解压hive

通过ftp工具上传hive包到/opt/hive,并解压到当前文件夹,解压命令为:

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

2.2 配置环境变量

vi /etc/profile

在配置文件左后增加hive相关的环境变量配置

export  JAVA_HOME=/opt/java/jdk1.8.0_121

export  HADOOP_HOME=/opt/hadoop/hadoop-2.8.0

export  HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop 

export  HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native 

export  HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib" 

export  HIVE_HOME=/opt/hive/apache-hive-2.1.1-bin

export  HIVE_CONF_DIR=${HIVE_HOME}/conf 

export  CLASS_PATH=.:${JAVA_HOME}/lib:${HIVE_HOME}/lib:$CLASS_PATH

export  PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin:$PATH 

保存后,执行命令使其生效:

  source  /etc/profile

2.3 配置hive

以下按照流程一步步走即可

使用hadoop新建两个hdfs目录

$HADOOP_HOME/bin/hadoop   fs   -mkdir   -p   /user/hive/warehouse

$HADOOP_HOME/bin/hadoop   fs   -mkdir  -p   /tmp/hive/

 给刚才新建的目录赋予读写权限,执行命令:

$HADOOP_HOME/bin/hadoop   fs   -chmod   777   /user/hive/warehouse 

$HADOOP_HOME/bin/hadoop   fs   -chmod  777   /tmp/hive

进入/opt/hive/apache-hive-2.1.1-bin/conf目录,新建hive-site.xml文件并配置

cd   /opt/hive/apache-hive-2.1.1-bin/conf

将hive-default.xml.template文件复制一份,并且改名为hive-site.xml,命令是:

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

通过ftp将hive-site.xml下载到本地,打开进行配置否覆盖vm1上的原文件

将hive-site.xml文件中的所有

${system:java.io.tmpdir}替换为/opt/hive/tmp,

${system:user.name}都替换为root

搜索javax.jdo.option.ConnectionURL,将该name对应的value修改为MySQL的地址,例如:

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

      <value>jdbc:mysql://192.168.191.131:3306/hive?createDatabaseIfNotExist=true</value>

 搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径,例如:

   <property> 

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

        <value>com.mysql.jdbc.Driver</value> 

  </property>      

搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:

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

     <value>root</value>

搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:

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

     <value>123456</value>

搜索hive.metastore.schema.verification,将对应的value修改为false:

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

     <value>false</value>

将更改好的hive-site.xml文件覆盖原文件

将MySQL驱动包上载到lib目录

 

进入目录 /opt/hive/apache-hive-2.1.1-bin/conf

cd    /opt/hive/apache-hive-2.1.1-bin/conf

将hive-env.sh.template文件复制一份,并且改名为hive-env.sh,命令是:

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

打开hive-env.sh配置并且添加以下内容:

export  HADOOP_HOME=/opt/hadoop/hadoop-2.8.0

export  HIVE_CONF_DIR=/opt/hive/apache-hive-2.1.1-bin/conf

export  HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-2.1.1-bin/lib

对MySQL数据库进行初始化,进入到hive的bin目录 执行命令:

cd   /opt/hive/apache-hive-2.1.1-bin/bin

对数据库进行初始化,执行命令:

schematool   -initSchema  -dbType  mysql

执行成功后,mysql数据库中的hive库里已经有一堆表创建好了

3 启动hive

      进入到hive的bin目录执行命令:

   cd   /opt/hive/apache-hive-2.1.1-bin/bin

       执行hive脚本进行启动,执行命令:

./hive

hive>  出现即可

4 测试

创建数据库

create database hive_test

返回ok说明创建成功

use hive_test;

创建表

create table student(id int,name string) row format delimited fields terminated by '\t';

返回ok说明创建成功

将文件数据写入表中

 (1)在/opt/hive目录内新建一个文件

   执行Linux命令(最好是重新打开一个终端来执行):

   touch    /opt/hive/student.txt

  往文件中添加以下内容:

001 zhangsan

002 lisi

003 wangwu

004 zhaoliu

005 chenqi

说明:ID和name直接是TAB键,不是空格,因为在上面创建表的语句中用了terminated  by  '\t'所以这个文本里id和name的分割必须是用TAB键,还有就是行与行之间不能有空行,否则下面执行load,会把NULL存入表内,该文件要使用unix格式,如果是在windows上用txt文本编辑器编辑后在上载到服务器上,需要用工具将windows格式转为unix格式,例如可以使用Notepad++来转换。

完成上面的步骤后,在磁盘上/opt/hive/student.txt文件已经创建成功,文件中也已经有了内容,在hive命令行中执行加载数据的hive命令:

load data local inpath '/opt/hive/student.txt' into table hive_test.student;

执行命令,查看是否把刚才文件中的数据写入成功,hive命令是:

select  *  from    student;

 

说明:因为什么的操作使用use  hive_test;指定了数据库,所以这里直接用表名student,如果没有指定数据库,请把这个语句换成

select  *  from  hive_test.student;

数据出现即可

http://192.168.191.133:50070/explorer.html#/user/hive/warehouse/hive_test.db

 

安装hive成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值