CentOS7.0基于hadoop集群安装配置Hive

前言

安装Apache Hive前提是要先安装hadoop集群,并且hive只需要在hadoop的namenode节点集群里安装即可(需要再有的namenode上安装),可以不在datanode节点的机器上安装。还需要说明的是,虽然修改配置文件并不需要把hadoop运行起来,但是本文中用到了hadoop的hdfs命令,在执行这些命令时你必须确保hadoop是正在运行着的,而且启动hive的前提也需要hadoop在正常运行着,所以建议先把hadoop集群启动起来。

有关如何在CentOS7.0上安装hadoop集群请参考:CentOS7.0下Hadoop2.7.3的集群搭建

1.下载Apache Hadoop

下载地址:http://hive.apache.org/downloads.html

点击下图中的链接:

点击下图中的某个下载地址,优先选择国内源:

我下载的上2.1.1版本,如下图所示:

2.安装Apache Hive

2.1.上载和解压缩

#解压
[dtadmin@apollo ~]$ sudo tar -zxvf apache-hive-2.1.1-bin.tar.gz 
#把解压好的移到/user/local/下
[dtadmin@apollo ~]$ sudo mv apache-hive-2.1.1-bin /usr/local/hive

2.2.配置环境变量

#编辑/etc/profile,添加hive相关的环境变量配置
[root@apollo dtadmin]# vim /etc/profile
#在文件结尾添加内容如下:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
#修改完文件后,执行如下命令,让配置生效:
[root@apollo dtadmin]# source /etc/profile

2.3.Hive配置Hadoop HDFS

2.3.1 hive-site.xml配置

进入目录$HIVE_HOME/conf,将hive-default.xml.template文件复制一份并改名为hive-site.xml

#进入hive配置文件目录$HIVE_HOME/conf
[root@apollo hive]# cd $HIVE_HOME/conf 
#拷贝并重命名
[root@apollo conf]# cp hive-default.xml.template hive-site.xml

使用hadoop新建hdfs目录,因为在hive-site.xml中有如下配置:

<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
  <property>

执行hadoop命令新建/user/hive/warehouse目录:

#新建目录/user/hive/warehouse
[root@apollo conf]# $HADOOP_HOME/bin/hadoop dfs -mkdir -p /user/hive/warehouse
#给新建的目录赋予读写权限
[hadoop@apollo conf]$ sh $HADOOP_HOME/bin/hdfs dfs -chmod 777 /user/hive/warehouse
#查看修改后的权限
[hadoop@apollo conf]$  sh $HADOOP_HOME/bin/hdfs dfs -ls /user/hive
Found 1 items
drwxrwxrwx   - impala supergroup          0 2017-06-06 01:46 /user/hive/warehouse


#运用hadoop命令新建/tmp/hive目录
[hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -mkdir -p /tmp/hive
#给目录/tmp/hive赋予读写权限
[hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -chmod 777 /tmp/hive
#检查创建好的目录
[hadoop@apollo conf]$ $HADOOP_HOME/bin/hdfs dfs -ls /tmp
Found 1 items
drwxrwxrwx   - hadoop supergroup          0 2017-06-06 05:06 /tmp/hive

2.3.2修改$HIVE_HOME/conf/hive-site.xml中的临时目录

将hive-site.xml文件中的${system:java.io.tmpdir}替换为hive的临时目录,例如我替换为$HIVE_HOME/tmp,该目录如果不存在则要自己手工创建,并且赋予读写权限。

[root@apollo conf]# cd $HIVE_HOME
[root@apollo hive]# mkdir tmp

配置文件hive-site.xml:

  • 将文件中的所有 ${system:java.io.tmpdir}替换成/usr/local/hive/tmp
  • 将文件中所有的${system:user.name}替换为root

2.4安装配置mysql

2.4.1.安装mysql

CentOS7.0安装mysql请参考:CentOS7 rpm包安装mysql5.7

2.4.2. 把mysql的驱动包上传到Hive的lib目录下:

#上传
[dtadmin@apollo ~]$ sudo cp mysql-connector-java-5.1.36.jar $HIVE_HOME/lib
#查看文件是否上传到了$HIVE_HOME/lib目录下
[dtadmin@apollo ~]$ ls -la $HIVE_HOME/lib/ | grep "mysql*"
-r-xr-xr-x  1 root root   972007 Jun  6 07:26 mysql-connector-java-5.1.36.jar

2.4.3修改hive-site.xml数据库相关配置

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

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://192.168.56.181:3306/hive?createDatabaseIfNotExist=true</value>
      <description>
        JDBC connect string for a JDBC metastore.
        To use SSL to encrypt/authenticate the connection,provide database-specific SSL flag in the connection URL.
        For example,jdbc:postgresql://myhost/db?ssl=true for postgres database.
      </description>
    </property>
  • 搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径:

    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
      <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
  • 搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:

    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
      <description>Username to use against metastore database</description>
    </property>
  • 搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:

    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>Love88me</value>
      <description>password to use against metastore database</description>
    </property>
  • 搜索hive.metastore.schema.verification,将对应的value修改为false:

    <property>
      <name>hive.metastore.schema.verification</name>
      <value>false</value>
      <description>
        Enforce metastore schema version consistency.
        True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automatic
              schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
              proper metastore schema migration. (Default)
        False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
      </description>
    </property>

2.4.4 在$HIVE_HOME/conf目录下新建hive-env.sh

#进入目录
[root@apollo dtadmin]# cd $HIVE_HOME/conf
#将hive-env.sh.template 复制一份并重命名为hive-env.sh
[root@apollo conf]# cp hive-env.sh.template hive-env.sh
#打开hive-env.sh并添加如下内容
[root@apollo conf]# vim hive-env.sh
export HADOOP_HOME=/home/hadoop/hadoop2.7.3
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

3.启动和测试

3.1.MySQL数据库进行初始化

#进入$HIVE/bin
[root@apollo conf]# cd $HIVE_HOME/bin
#对数据库进行初始化:
[root@apollo bin]# schematool -initSchema -dbType mysql

如下图:

执行成功后,查看mysql数据库:

3.2.启动Hive

[root@apollo bin]# ./hive

如下图:

3.3.测试

3.3.1.查看函数命令:

hive>show functions;
OK
!
!=
$sum0
%
&
* +
- /
<
<=
<=>
<>
= ==
>
>=
^
abs
acos
add_months aes_decrypt
aes_encrypt ...

3.3.2.查看sum函数的详细信息的命令:

hive> desc function sum;
OK
sum(x) - Returns the sum of a set of numbers
Time taken: 0.008 seconds,Fetched: 1 row(s)

3.3.3.新建数据库、数据表

#新建数据库
hive> create database sbux;
#新建数据表
hive> use sbux;
hive> create table student(id int,name string) row format delimited fields terminated by '\t';
hive> desc student;
OK
id                      int                                         
name                    string                                      
Time taken: 0.114 seconds,Fetched: 2 row(s)

3.3.4.将文件写入到表中

3.3.4.1.在$HIVE_HOME下新建一个文件
#进入#HIVE_HOME目录
[root@apollo hive]# cd $HIVE_HOME
#新建文件student.dat
[root@apollo hive]# touch student.dat
#在文件中添加如下内容
[root@apollo hive]# vim student.dat
001     david
002     fab
003     kaishen
004     josen
005     arvin
006     wada
007     weda
008     banana
009     arnold
010     simon
011     scott

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

3.3.4.2.导入数据
hive> load data local inpath '/usr/local/hive/student.dat' into table sbux.student;
Loading data to table sbux.student
OK
Time taken: 0.802 seconds
3.3.4.3查看导入数据是否成功
hive> select * from student;
OK
1   david
2   fab
3   kaishen
4   josen
5   arvin
6   wada
7   weda
8   banana
9   arnold
10  simon
11  scott
Time taken: 0.881 seconds,Fetched: 11 row(s)

3.4.在界面上查看刚刚写入的hdfs数据

在hadoop的namenode上查看:

3.5.在mysql的hive数据里查看

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor&#160;1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep &#39;Time zone&#39;查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=&quot;static&quot; ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// &lt;summary&gt; /// 取小写文件名后缀 /// &lt;/summary&gt; /// &lt;param name=&quot;name&quot;&gt;文件名&lt;/param&gt; /// &lt;returns&gt;返回小写后缀,不带“.”&lt;/ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start &amp; nohup ./kibana &amp;
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的&#160;Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程,&#160;ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属