Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)

Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)

背景

  1. Hadoop大数据套件被应用后,进行数据处理就必须编写mapreduce代码。而相当一部分大数据处理需求都是进行数据的查询操作(实际数据库的操作中,读写操作比例也有80%:20%的说法)
  2. Facebook的工程师也遇到这个问题。编写mapreduce对于程序员还是有一定门槛,但是会使用sql的人群更庞大。所以Facebook就发明了Hive,一个把sql语句转换为mapreduce代码的转换器。
  3. 不过Hive的使用场景,还是会有一些限制。既然是sql语句,则Hive转换的mapreduce所需要处理的数据就需要有结构跟数据库数据一样。同时Hive将sql转换为mapreduce代码是通过类似模板的操作
  4. 注意,Hive只是把Sql语句转换为mapreduce代码,也就是一个转换器。所以一般不需要安装集群,安装在一个节点即可。如果担心损坏,一般安装2台,切换者使用也可。

1. 安装环境

  1. Centos7.x 安装教程
  2. Hadoop 3.2.1
    yarn安装教程
    hdfs安装教程
  3. mysql5.7mysql安装教程
  4. hive 3.1.2
  5. mysql 驱动(mysql-connector-java-5.1.39.jar, 可以去maven或者其他仓库获取)

2. 安装步骤

  1. 正常启动HDFS和YARN

    在hadoop安装目录的sbin下,有一个start-all.sh脚本,当hdfs和yarn的配置都设置好之后,可以一键启动hdfs和yarn
    如果不想使用这个一键启动脚本,也可以分别调用start-dfs.sh和start-yarn.sh2个脚本

Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第1张图片

  1. 安装mysql
  1. 查看mysql是否运行
    netstat -nltp | grep 3306
    tcp 0 0 0.0.0.0:3306
  2. systemctl start mysqld 启动mysql服务
  3. 配置mysql的开机自启服务 systemctl enable mysqld
  4. 开启远程连接权限
    登录mysql:
    mysql -uroot -proot
    执行sql语句:
    mysql> set global validate_password_policy=0;
    mysql> set global validate_password_length=1; 这个两个设置以后 密码很简单不会报错
    开启远程连接权限:
    mysql > grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
    mysql > flush privileges;
  5. mysql启动正常 开启远程连接
    可以使用windows安装的navicat连接linux上的mysql服务器验证以下
  1. 上传hive的安装包
    使用rz软件,或者其他方式如secureCRT的alt+p切换到上传模式,将压缩包上传到第三方软件安装目录下。linux一般第三方软件安装在opt或者usr目录下。我的是安装到/opt/apps目录下
    在软件包所在目录下,执行解压缩的shell指令
tar -zxf apache-hive-3.1.2-bin.tar.gz
  1. 修改配置信息
  • 在Hive的安装目录下,找到conf目录,我的目录路径如下opt/apps/hive-3.1.2/conf。将原本的脚本重命名.
cp hive-env.sh.template  hive-env.sh
  • 编辑hive-env.sh脚本,添加内容。使用vi命令打开文件
 vi hive-env.sh
  • 文本中,添加内容如下。第一行是指定hadoop的安装路径,第二行是指定Hive安装目录下的conf目录的路径。
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第2张图片
export HADOOP_HOME=/opt/apps/hadoop-3.2.1/

export HIVE_CONF_DIR=/opt/apps/hive-3.1.2/conf/
  1. 创建一个配置文件(在conf目录下)
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第3张图片
  • 执行如下shell命令
vi  hive-site.xml
  • 将以下内容拷贝到这个新创建的xml文件中,注意替换javax.jdo.option.ConnectionURL值的mysql所在主机域名,注意替换mysql的账号和用户名。
<configuration>

<property>
<name>javax.jdo.option.ConnectionURLname>
<value>jdbc:mysql://doit01:3306/hive?createDatabaseIfNotExist=true&useSSL=falsevalue>
property>


<property>
<name>javax.jdo.option.ConnectionDriverNamename>
<value>com.mysql.jdbc.Drivervalue>
property>


<property>
<name>javax.jdo.option.ConnectionUserNamename>
<value>rootvalue>
property>
<property>
<name>javax.jdo.option.ConnectionPasswordname>
<value>rootvalue>
property>

<property>
<name>hive.metastore.warehouse.dirname>
<value>/user/hive/warehousevalue>
property>

<property>
<name>hive.exec.scratchdirname>
<value>/user/hive/tmpvalue>
property>


<property>
<name>hive.querylog.locationname>
<value>/user/hive/logvalue>
property>


<property>
<name>hive.metastore.urisname>
<value>thrift://linux100:9083value>
property>


<property> 
<name>hive.server2.thrift.portname> 
<value>10000value>
property>
<property> 
<name>hive.server2.thrift.bind.hostname> 
<value>0.0.0.0value>
property>
<property>
<name>hive.server2.webui.hostname>
<value>0.0.0.0value>
property>


<property>
<name>hive.server2.webui.portname>
<value>10002value>
property>

<property> 
<name>hive.server2.long.polling.timeoutname> 
<value>5000value>                               
property>

<property>
<name>hive.server2.enable.doAsname>
<value>truevalue>
property>

<property>
<name>datanucleus.autoCreateSchemaname>
<value>falsevalue>
property>

<property>
<name>datanucleus.fixedDatastorename>
<value>truevalue>
property>

<property>
<name>hive.execution.enginename>
<value>mrvalue>
property>

configuration>
  1. 编辑Hadoop安装目录中,配置文件中的core-site.xml文件,我的路径如下/opt/apps/hadoop-2.8.5/etc/hadoop/core-site.xml
  • 执行以下shell命令,使用vi打开这个文件(如果喜欢vim,也可以使用yum 安装vim软件,比vi更强大,可配置更多功能)
vi /opt/apps/hadoop-2.8.5/etc/hadoop/core-site.xml 
  • 打开后,在中添加以下三条配置信息,这些是关于hdfs的访问权限配置信息。
<property>
<name>dfs.permissions.enabledname>
<value>falsevalue>
property>

<property>
<name>hadoop.proxyuser.root.hostsname>
<value>*value>
property>

<property>
<name>hadoop.proxyuser.root.groupsname>
<value>*value>
property>
  1. 拷贝一个mysql的jdbc驱动jar包到hive的lib目录中
  • 将上面提到的mysql的驱动jar包,拷贝到Hive安装目录的lib目录下
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第4张图片
  1. 重启Hadoop的hdfs和yarn
  • cd到Hadoop安装目录下的sbin目录,有一键停止hdfs和yarn的脚本
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第5张图片
  • 执行以下shell脚本
 stop-all.sh 
 start-all.sh
  • 补充,实际一键启动和停止脚本本身内容就是分别调用了单独启动hdfs和yarn的脚本
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第6张图片
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第7张图片
  1. 解决hadoop3.2.1和hive3.1.2的冲突问题
  • 先把hive的lib目录下的guava-19.jar删除或者加一个后缀名如.bak
rm -rf  xxx 这是删除指令
mv xxx xxx.bak这是修改文件名指令(在jar包文件后加.bak后缀,就可以让系统不再认为这是一个jar包,和删除一样的效果)
  • 再从Hadoop的安装目录下拷贝更高版本的guava的jar包到hive的lib目录下,具体路径如下
    hdfs下的guava所在路径:/opt/apps/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar
    hive中放置guava jar包路径: /opt/apps/hive-3.1.2/lib/
cp  /opt/apps/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar  /opt/apps/hive-3.1.2/lib/

启动元数据服务(暂时不要执行这条指令,否则会报错) hive --service metastore
本身Hadoop 3.1.1可以和Hive3.1.2完美兼容,但是Hadoop3.2.1和Hive3.1.2就不是很兼容,需要解决jar包冲突,这里执行这个指令,会报错。如果执行了,请忽略,继续执行下面的步骤。

  1. 初始化hive的元数据库
  • 在Hive的bin目录下,执行以下shell指令。如果细心可以使用ll -a,会发现schematool 是一个可执行文件,文件读写执行的三个权限,最后一个权限是x,可执行。
./schematool -initSchema -dbType  mysql
  • 这时候,在mysql数据库中,多出一个hive数据库 ,这是记录元数据信息的
  • 这时候,在HDFS中的目录中, 根目录下有一个user目录,路径:/user/hive
  1. 在linux中配置hive的环境变量
  • linux的环境变量都是在/etc/profile文件中,注意linux的环境变量分割符号是冒号: windows操作系统环境变量分隔符是分号;
  • 执行以下shell命令
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第8张图片
  • 打开配置文件
vi /etc/profile
  • 在文件中添加环境变量
export  HIVE_HOME=/opt/apps/hive-3.1.2
  • 让配置文件生效
source /etc/profile
  1. 启动hive
  • 在Hive的bin目录下,或者任务路径下,输入 hive 这个指令,就可以启动Hive
    出现如下效果,说明安装成功
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第9张图片
  • 输入以下sql语句,进行功能验证
show  databases  ;
create database db_doit ;
create table if not exists tb_user (id int , name string) ; 
show tables ;
  1. 各级目录,linux的程序,一般都遵循相同目录命名和文件存放规则,lib就是一些依赖的第三方库的jar包等文件,bin就是可执行文件,etc或者conf就是配置文件,examples就是一些示例代码。
  • 一级目录
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第10张图片
  • bin目录下子目录
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第11张图片
  • conf下子目录
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第12张图片
  • binary-package-licenses
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第13张图片
  • examples
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第14张图片
  • hcatalog
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第15张图片
  • lib
    Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)_第16张图片

你可能感兴趣的:(hive,mapreduce,hadoop,hive,mapreduce,hadoop,hdfs)