文件下载(夸克)
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
版权归原作者 zmd-zk 所有, 如有侵权,请联系我们删除。