0


伪分布hadoop集群+hive的搭建

文件下载(夸克)

hadoop
链接:https://pan.quark.cn/s/4a54107a89ff
提取码:DRHr

jdk
链接:https://pan.quark.cn/s/74e3f3c97a98
提取码:kq1f

hive
链接:https://pan.quark.cn/s/0a0d442ceea7
提取码:DYdK

hadoop伪分布的搭建

一、准备工作

关闭防火墙

//查看状态
systemctl status firewalld
//关闭防火墙
systemctl stop firewalld
//开机不启动防火墙
systemctl disable firewalld

设置静态ip

vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="2636cc9d-4de5-4362-bf7b-3865d85af80a"
DEVICE="ens33"
ONBOOT="yes"

IPADDR="192.168.226.138"
NETMASK="255.255.255.0"
GATEWAY="192.168.226.2"
DNS1="114.114.114.114"
DNS2="8.8.8.8"

//重启网卡服务
systemctl restart network

配置hosts映射

vi /etc/hosts

ip shucang

免密登录自己

//生成公钥和私钥
ssh-keygen -t rsa
//将公钥传递给你想免密登录的电脑,比如shucang
ssh-copy-id shucang

验证
ssh shucang

退出
exit

安装jdk

mkdir -p /opt/modules     --以后存放安装包
mkdir -p /opt/installs    --以后存放解压后的软件 

1、上传,解压,重命名
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/installs
mv jdk1.8.0_171/ jdk

2、配置环境变量
vi /etc/profile

//追加
export JAVA_HOME=/opt/installs/jdk
export PATH=$PATH:$JAVA_HOME/bin

3、刷新环境变量
source /etc/profile

4、验证
java -version

修改linux的⼀个安全机制

vi /etc/selinux/config
修改⾥⾯的 SELINUX=disabled

修改yum源

修改阿里云的镜像文件:
1、cd /etc/yum.repos.d/ 
2、备份⼀下:mv CentOS-Base.repo CentOS-Base.repo.bak
3、下载阿⾥云镜像到本地:
 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
4、清除yum的缓存
   yum clean all
   yum makecache
5、安装一些命令
yum install -y ntpdate
yum install -y vim
yum install -y net-tools

二、安装hdfs

1、上传,解压,重命名
tar -zxvf hadoop-3.3.1.tar.gz -C /opt/installs/
mv hadoop-3.3.1/ hadoop

2、配置环境变量
export HADOOP_HOME=/opt/installs/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3、刷新环境变量
source /etc/profile

4、验证
hadoop version

修改配置文件

cd /opt/installs/hadoop/etc/hadoop

1、修改core-site.xml

<!-- 设置namenode节点 -->
  <!-- 注意: hadoop1.x时代默认端⼝9000 hadoop2.x时代默认端⼝8020 hadoop3.x时 代默认端⼝ 9820 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://shucang:9820</value>
  </property>
  
  <!-- hdfs的基础路径,被其他属性所依赖的⼀个基础路径 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/installs/hadoop/tmp</value>
  </property>

  <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
    <!-- 不开启权限检查 -->
    <property>
       <name>dfs.permissions.enabled</name>
       <value>false</value>
    </property>

2、修改hdfs-site.xml

    <property>
        <!--备份数量-->
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!--secondarynamenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>shucang:9868</value>
    </property>
    <!-- namenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>shucang:9870</value>
    </property>

    <!-- 可以在hdfs上预览文件内容 -->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>

3、修改hadoop-env.sh

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

export JAVA_HOME=/opt/installs/jdk

4、修改workers 文件

shucang

5、格式化namenode

hdfs namenode -format

三、安装yarn

cd /opt/installs/hadoop/etc/hadoop

1、修改mapred-site.xml

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

2、修改yarn-site.xml

<!--指定resourceManager启动的主机为第一台服务器-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>shucang</value>
    </property>

    <!--配置yarn的shuffle服务-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value> 
    </property>

<!--获取value的值 命令:hadoop classpath-->

<property>
        <name>yarn.application.classpath</name>
<value>/opt/installs/hadoop/etc/hadoop:/opt/installs/hadoop/share/hadoop/common/lib/*:/opt/installs/hadoop/share/hadoop/common/*:/opt/installs/hadoop/share/hadoop/hdfs:/opt/installs/hadoop/share/hadoop/hdfs/lib/*:/opt/installs/hadoop/share/hadoop/hdfs/*:/opt/installs/hadoop/share/hadoop/mapreduce/*:/opt/installs/hadoop/share/hadoop/yarn:/opt/installs/hadoop/share/hadoop/yarn/lib/*:/opt/installs/hadoop/share/hadoop/yarn/*</value> 
 </property>

3、检查hadoop-env.sh 中是否配置了权限

export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

四、启动hadoop集群

//停止/启动hdfs+yarn
start-all.sh
stop-all.sh

//单独启动/停止hdfs
stop-dfs.sh
start-dfs.sh

//单独启动/停止yarn
start-yarn.sh
stop-yarn.sh

访问页面

yarn
shucang:8088

hdfs
shucang:9870

五、安装mysql8.0

mysql8.0在linux上的两种安装方式-CSDN博客

六、安装hive

1、上传,解压,重命名

 tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/installs/

 mv apache-hive-3.1.2-bin/ hive

2、配置环境变量

vi /etc/profile

export HIVE_HOME=/opt/installs/hive
export PATH=$PATH:$HIVE_HOME/bin

3、刷新环境变量

source /etc/profile

修改配置文件

cd /opt/installs/hive/conf

1、修改hive-env.sh

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

export HIVE_CONF_DIR=/opt/installs/hive/conf
export JAVA_HOME=/opt/installs/jdk
export HADOOP_HOME=/opt/installs/hadoop
export HIVE_AUX_JARS_PATH=/opt/installs/hive/lib
export HADOOP_HEAPSIZE=4096

2、修改hive-site.xml

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

将以前的设置全部删除

//第一次:将hive的元数据放在mysql中

 <!--配置MySql的连接字符串 创建一个hive数据库-->
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    </property>
    <!--配置MySql的连接驱动-->
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <!--配置登录MySql的用户-->
    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
    </property>
    <!--配置登录MySql的密码-->
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>123456</value>
    </property>
    <!-- 以下两个不需要修改,只需要了解即可 -->
    <!-- 该参数主要指定Hive的数据存储目录  -->
    <property>
        <name>hive.metastore.shucang.dir</name>
        <value>/user/hive/shucang</value>
      </property>
    <!-- 该参数主要指定Hive的临时文件存储目录  -->
     <property>
        <name>hive.exec.scratchdir</name>
        <value>/tmp/hive</value>
      </property>

//第二次追加:修改hive的远程操控

<!--Hive工作的本地临时存储空间-->
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/opt/installs/hive/iotmp/root</value>
    </property>
    <!--如果启用了日志功能,则存储操作日志的顶级目录-->
    <property>
        <name>hive.server2.logging.operation.log.location</name>
        <value>/opt/installs/hive/iotmp/root/operation_logs</value>
    </property>
    <!--Hive运行时结构化日志文件的位置-->
    <property>
        <name>hive.querylog.location</name>
        <value>/opt/installs/hive/iotmp/root</value>
    </property>
    <!--用于在远程文件系统中添加资源的临时本地目录-->
    <property>
        <name>hive.downloaded.resources.dir</name>
        <value>/opt/installs/hive/iotmp/${hive.session.id}_resources</value>
    </property>

//第三次追加:配置hiveserver2服务

<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>shucang</value>
  </property>
  <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
  </property>

// 第四次追加——配置metastore服务
<property>
        <name>hive.metastore.uris</name> 
        <value>thrift://shucang:9083</value>
    </property>

3、修改hadoop中的core-site.xml文件

在搭建hadoop伪分布时已经配置完成,确认一下

cd /opt/installs/hadoop/etc/hadoop
//追加
<property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
    <!-- 不开启权限检查 -->
    <property>
       <name>dfs.permissions.enabled</name>
       <value>false</value>
    </property>

4、创建文件夹


hdfs dfs -mkdir -p /user/hive/warehouse 
hdfs dfs -mkdir -p /tmp/hive/ 
hdfs dfs -chmod 750 /user/hive/warehouse 
hdfs dfs -chmod 777 /tmp/hive
cd /opt/installs/hive/
mkdir iotmp
chmod 777 iotmp

5、格式化元数据

先将mysql的驱动包放在hive的lib下

schematool --initSchema -dbType mysql

在mysql中的hive数据库中,查看是否有表

6、进入hive

进入hive前需要启动metastore服务

远程连接需要启动hiveserver2服务

该命令为下面的脚本

// 同时启动/关闭metastore和hiveserver2服务
hive-server-manager.sh start/stop

//单独启动
hive-server-manager.sh start/stop metastore/hiveserver2

脚本的配置
cd /usr/local/bin 
vi hive-server-manager.sh
chmod 777 vi hive-server-manager.sh

一个脚本,为了方便启动hive和metastore服务

#!/bin/bash

# hive 服务控制脚本,可以控制 Hive 的 metastore 和 hiveserver2 服务的启停
# 使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2]
#   - start  : 一键开启metastore和hiveserver2服务,也可以指定服务开启
#   - stop   : 一键停止metastore和hiveserver2服务,也可以指定服务停止
#   - status : 一键查看metastore和hiveserver2服务,也可以指定服务查看

help_info() {
    echo "+---------------------------------------------------------------------------------+"
    echo "|             本脚本可以一键控制 Hive 的 metastore 和 hiveserver2 服务            |"
    echo "| 使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2]    |"
    echo "+---------------------------------------------------------------------------------+"
    echo "| 第一个参数用来指定操作命令,可以选择 开始(start)、停止(stop)、状态查看(status)  |"
    echo "| 第二个参数用来指定操作的服务,可以选择 metastore、hiveserver2,默认为全部       |"
    echo "+---------------------------------------------------------------------------------+"
    echo "|     - start  : 一键开启metastore和hiveserver2服务,也可以指定服务开启           |"
    echo "|     - stop   : 一键停止metastore和hiveserver2服务,也可以指定服务停止           |"
    echo "|     - status : 一键查看metastore和hiveserver2服务,也可以指定服务查看           |"
    echo "+---------------------------------------------------------------------------------+"
    exit -1
}

# 获取操作命令
op=$1
# 获取操作的服务
server=$2

# 检查参数是否正确
if [ ! $op ]; then
    help_info
elif [ $op != "start" -a $op != "stop" -a $op != "status" ]; then
    help_info
fi

# 检查进程状态
metastore_pid=`ps aux | grep org.apache.hadoop.hive.metastore.HiveMetaStore | grep -v grep | awk '{print $2}'`
hiveserver2_pid=`ps aux | grep proc_hiveserver2 | grep -v grep | awk '{print $2}'`

# 检查日志文件夹的存在情况,如果不存在则创建这个文件夹
log_dir=/var/log/my_hive_log
if [ ! -e $log_dir ]; then
    mkdir -p $log_dir
fi
# 开启服务
start_metastore() {
    # 检查是否开启,如果未开启,则开启 metastore 服务
    if [ $metastore_pid ]; then
        echo "metastore   服务已经开启,进程号: $metastore_pid,已跳过"
    else
        nohup hive --service metastore >> $log_dir/metastore.log 2>&1 &
        echo "metastore   服务已经开启,日志输出在 $log_dir/metastore.log"
    fi
}
start_hiveserver2() {
    # 检查是否开启,如果未开启,则开启 hiveserver2 服务
    if [ $hiveserver2_pid ]; then
        echo "hiveserver2 服务已经开启,进程号: $hiveserver2_pid,已跳过"
    else
        nohup hive --service hiveserver2 >> $log_dir/hiveserver2.log 2>&1 &
        echo "hiveserver2 服务已经开启,日志输出在 $log_dir/hiveserver2.log"
    fi 
}

# 停止服务
stop_metastore() {
    if [ $metastore_pid ]; then
        kill -9 $metastore_pid
    fi
    echo "metastore   服务已停止" 
}
stop_hiveserver2() {
    if [ $hiveserver2_pid ]; then 
        kill -9 $hiveserver2_pid
    fi
    echo "hiveserver2 服务已停止"
}

# 查询服务
status_metastore() {
    if [ $metastore_pid ]; then
        echo "metastore   服务已开启,进程号: $metastore_pid"
    else
        echo "metastore   服务未开启"
    fi
}
status_hiveserver2() {
    if [ $hiveserver2_pid ]; then
        echo "hiveserver2 服务已开启,进程号: $hiveserver2_pid"
    else
        echo "hiveserver2 服务未开启"
    fi
}

# 控制操作
if [ ! $server ]; then
    ${op}_metastore
    ${op}_hiveserver2
elif [ $server == "metastore" ]; then
    ${op}_metastore
elif [ $server == "hiveserver2" ]; then
    ${op}_hiveserver2
else
    echo "服务选择错误"
    help_info
fi
标签: hadoop hive 大数据

本文转载自: https://blog.csdn.net/weixin_52642840/article/details/142345353
版权归原作者 zmd-zk 所有, 如有侵权,请联系我们删除。

“伪分布hadoop集群+hive的搭建”的评论:

还没有评论