hive自动安装脚本

server/2024/10/21 10:13:20/
  • 使用该脚本注意事项
  1. 安装hive之前确定机子有网络。或者yum 更改为本地源,因为会使用epel仓库下载一个pv的软件
  2. 使用该脚本前提是自行安装好mysql数据库
  3. 准备好tomcat软件包,该脚本使用tomcat9.x版本测试过能正常执行安装成功,其他版本没有测试过不知道有没这个问题
  4. hive安装脚本中自动更换成tez引擎了,需要准备好tez安装软件,测试时使用的是tez-0.9.2版本
  5. 安装之前请自行更改脚本内容前面定义的software_dir(所有安装软件包存放目录)、install_dir(安装软件目录)、mysql_user、mysql_password 这个几个变量根据自已情况进行更改
  6. 使用该脚本之前需要把hadoop先安装好并且把hadoop集群启动起来,hadoop集群未启动切勿执行该脚本
bash">#!/bin/bashsoftware_dir=/root/hadoop/
install_dir=/opt/
mysql_user=root
mysql_password=1234
rm_node=node1yum repolist |grep epel &> /dev/null
if [ $? -ne 0 ] 
thenwget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null
firpm -qa |grep pv &> /dev/null
if [ $? -ne 0 ]
thenyum install -y pv &>/dev/nullrpm -qa |grep pv &> /dev/null[ $? -ne 0 ] && echo " Please resolve the network problem !!!" && exit 1
fiecho ============ Start Hive Configuration =============
hive_path=${install_dir}hive
hive_conf_path=$hive_path/conf
tez_path=${install_dir}tezrm -rf $tez_path
pv ${software_dir}*tez* |tar zxf - -C $install_dir
mv ${install_dir}*tez* $tez_path
chown -R root:root $tez_pathrm -rf $hive_path
pv ${software_dir}*hive* |tar zxf - -C $install_dir
mv ${install_dir}*hive* ${install_dir}hiveif [ -f "$hive_conf_path/hive-log4j2.properties.template" ]
then mv $hive_conf_path/hive-log4j2.properties.template $hive_conf_path/hive-log4j2.properties
fiif [ -f "$hive_conf_path/hive-exec-log4j2.properties.template" ] 
thenmv $hive_conf_path/hive-exec-log4j2.properties.template $hive_conf_path/hive-exec-log4j2.properties
fi
cp ${software_dir}mysql-connector-java-5.1.44-bin.jar $hive_path/lib
sed -i "/property.hive.log.dir/c\property.hive.log.dir=$hive_path/logs" $hive_conf_path/hive-log4j2.properties
sed -i "/property.hive.log.dir/c\property.hive.log.dir=$hive_path/logs" $hive_conf_path/hive-exec-log4j2.propertiescat > $hive_conf_path/hive-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 配置hive元数据在hdfs的存储路径 --><property><name>hive.metastore.warehouse.dir</name><value>/hive/database</value></property><!-- 对于小数据量,自动使用本地模式执行 MR job 加快执行过程 ,默认是false --><property><name>hive.exec.mode.local.auto</name><value>true</value></property><!-- 取消列名前面的表名 --><property><name>hive.resultset.use.unique.column.names</name><value>false</value></property><!-- 更换计算引擎 默认MR -->  <property><name>hive.execution.engine</name><value>tez</value></property><!-- 关闭元数据校验 --><property><name>hive.metastore.schema.verification</name><value>false</value></property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://${HOSTNAME}:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncodeing=UTF-8&amp;useSSL=false</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>$mysql_user</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>$mysql_password</value></property><!-- 下面三个设置解决 tez-ui中hive queries不显示数据的问题--><property><name>hive.exec.pre.hooks</name><value>org.apache.hadoop.hive.ql.hooks.ATSHook</value></property><property><name>hive.exec.post.hooks</name><value>org.apache.hadoop.hive.ql.hooks.ATSHook</value></property><property><name>hive.exec.failure.hooks</name><value>org.apache.hadoop.hive.ql.hooks.ATSHook</value></property></configuration>
EOF
rm -rf ${hive_path}/lib/log4j-slf4j-impl-*.jarss -lntp |grep 3306 &>/dev/null
if [ $? -ne 0 ]
thenecho -e " \033[31m ================== Install mysql and start it =================== \033[0m"exit 1
fidocker ps | grep mysql &>/dev/null
if [ $? -eq 0 ]
thendocker exec -it mysql mysql -u $mysql_user -p$mysql_password -e "drop database if exists hive;" &>/dev/null
elsemysql mysql -u $mysql_user -p$mysql_password -e "drop database if exists hive;" &>/dev/null
fi
schematool -dbType mysql -initSchemahdfs dfs -rm -r /tez
hdfs dfs -mkdir /tez
tez_name=$(ls $tez_path/share)
hdfs dfs -put $tez_path/share/$tez_name /tez
rm -rf ${tez_path}/lib/slf4j-log4j12-*.jarcat > $hive_conf_path/tez-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>tez.lib.uris</name><value>\${fs.defaultFS}/tez/$tez_name</value></property><property><name>tez.use.cluster.hadoop-libs</name><value>true</value></property><property><name>tez.history.logging.service.class</name><value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value></property><property><name>tez.tez-ui.history-url.base</name><value>http://localhost:8080/tez-ui/</value></property>  
</configuration>
EOFmv $hive_conf_path/hive-env.sh.template $hive_conf_path/hive-env.shcat >> $hive_conf_path/hive-env.sh <<EOF
export TEZ_HOME=$tez_path
export HADOOP_CLASSPATH=\$HADOOP_CLASSPATH:\$TEZ_HOME/*:\$TEZ_HOME/lib/*
EOFhadoop_path=$(which hadoop|sed 's|/bin.*||')
sed -i '/^<\/configuration>$/d' $hadoop_path/etc/hadoop/yarn-site.xml
sed -i '/<!-- 开启timelineserver -->/,$d' $hadoop_path/etc/hadoop/yarn-site.xml
cat >> $hadoop_path/etc/hadoop/yarn-site.xml <<EOF<!-- 开启timelineserver --><property><name>yarn.timeline-service.enabled</name><value>true</value></property><!-- 配置timeline安装在指定节点上 --><property><name>yarn.timeline-service.hostname</name><value>$HOSTNAME</value></property><!-- 开启跨域 --><property><name>yarn.timeline-service.http-cross-origin.enabled</name><value>true</value></property><!-- 发送RM的系统指标到timeline服务上 --><property><name>yarn.resourcemanager.system-metrics-publisher.enabled</name><value>true</value></property><!-- 开启通用历史服务 -->  <property><name>yarn.timeline-service.generic-application-history.enabled</name><value>true</value></property><!-- 设置RPC请求的处理程序线程数  默认 10 --><property><name>yarn.timeline-service.handler-thread-count</name><value>24</value></property></configuration>
EOFxsync $hadoop_path/etc/hadoop/yarn-site.xml
jps |egrep "NodeManager|ResourceManager"
if [ $? -eq 0 ]
thenstop-yarn.shsleep 2start-yarn.sh
elsestart-all.sh
fijps |grep "ApplicationHistoryServer"
if [ $? -eq 0 ]
then yarn-daemon.sh stop timelineserver
fi
yarn-daemon.sh start timelineservertomcat_path=${install_dir}tomcat
if [ -x $tomcat_path/bin/shutdown.sh ]
then$tomcat_path/bin/shutdown.sh &>/dev/nullrm -rf $tomcat_path
fipv ${software_dir}*tomcat* |tar zxf - -C $install_dir
mv ${install_dir}*tomcat* $tomcat_pathmkdir -p $tomcat_path/webapps/tez-ui/
unzip -d $tomcat_path/webapps/tez-ui/ $tez_path/*.war &>/dev/null
sed -i "s|//timeline: \"http://localhost:8188\"|timeline: \"http://$HOSTNAME:8188\"|" $tomcat_path/webapps/tez-ui/config/configs.env
sed -i "s|//rm: \"http://localhost:8088\"|rm: \"http://$rm_node:8088\"|" $tomcat_path/webapps/tez-ui/config/configs.env
sed -i 's|//timeZone: "UTC"|timeZone: "Asia/Shanghai"|' $tomcat_path/webapps/tez-ui/config/configs.envcat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target[Service]
Type=forkingEnvironment="JAVA_HOME=/opt/jdk1.8.0_201"PIDFile=$tomcat_path/tomcat.pid
ExecStart=$tomcat_path/bin/startup.sh
ExecStop=$tomcat_path/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.targetEOFecho "CATALINA_PID=\$CATALINA_BASE/tomcat.pid"  >  $tomcat_path/bin/setenv.shsystemctl daemon-reload
systemctl enable --now tomcatecho -e "\033[32m ================== Installation Hive Complete =================== \033[0m"
  • 脚本执行成功之后,访问tez-ui界面地址, 下面的master 是服务器的主机名,自行更换自已定义的主机名或者ip
http://master:8080/tez-ui
  • tiemlineserver 服务器启动与关闭 hive脚本执行成功之后 是自动把它启动了的
bash"># 关闭
yarn-daemon.sh stop timelineserver 
# 开启
yarn-daemon.sh start timelineserver 
  • tomcat 加入到service中了 默认设置成开机自启了
bash">#关闭
systemctl stop tomcat
#开启
systemctl start tomcat
  • beeline 启动
bash">nohup hiveserver2 &>hiveserver2.log &
beeline -u jdbc:hive2://master:10000 -n root 
#退出 beeline 命令行界面
!q

http://www.ppmy.cn/server/95811.html

相关文章

打造未来交互新篇章:基于AI大模型的实时交互式流媒体数字人项目

在当今数字化浪潮中,人工智能(AI)正以前所未有的速度重塑我们的交互体验。本文将深入探讨一项前沿技术——基于AI大模型的实时交互式流媒体数字人项目,该项目不仅集成了多种先进数字人模型,还融合了声音克隆、音视频同步对话、自然打断机制及全身视频拼接等前沿功能,为用…

【STM32】“stm32f10x.h” 头文件的作用

目录 1. 文件结构与头文件保护1.1 头文件保护1.2 包含的头文件 2. 宏定义和常量2.1 系统时钟相关2.2 外设时钟使能2.3 中断优先级 3. 外设寄存器结构体3.1 GPIO 寄存器结构体3.2 RCC 寄存器结构体3.3 USART 寄存器结构体 4. 外设头文件的引入4.1 GPIO 外设头文件4.2 RCC 外设头…

【前端element-ui】对于封装el-select和checkbox-group的多选控件导致数据双向绑定失败问题的处理

一、关于通过父组件props传参el-select【下拉多选模式】双向绑定失败问题处理方式 1、this.$emit(“change”, val); 采用change二不是input 2、对_value赋值不能直接使用""号&#xff0c;而是push <template><div><el-select v-model"_value&q…

警惕!过度焦虑背后的隐形伤害:你的身体在悄悄发出警告

在这个快节奏、高压力的时代&#xff0c;焦虑似乎成了现代人难以逃脱的情绪枷锁。偶尔的焦虑感或许能激发我们的动力&#xff0c;促使我们面对挑战&#xff0c;但当这种情绪超出可控范围&#xff0c;演变为过度焦虑时&#xff0c;它不仅侵蚀着我们的心理健康&#xff0c;更在悄…

ShardingSphere 之ShardingJDBC扩展功能:分片审计、数据加密、读写分离、广播表、绑定表

文章目录 分片审计数据加密读写分离广播表绑定表 分片审计 开发者手册 分片审计功能是针对数据库分片场景下对执行的 SQL 语句进行审计操作。可以对我们要执行的sql进行拦截并进行审核。 目前ShardingSphere内置的分片审计算法只有一个&#xff0c;DML_SHARDING_CONDITIONS。…

使用openpyxl库对excel函数处理数据

哈喽,大家好,我是木头左! 在本文将介绍如何使用openpyxl库对Excel文件进行函数处理,包括使用内置函数、自定义函数和引用其他工作表的函数等。 使用内置函数 openpyxl提供了许多内置函数,可以直接在单元格中使用。例如,可以使用SUM函数计算一列或一行的总和,使用AVERA…

Vue+SpringBoot+SpringSecurity项目对于跨域的深度理解

随记&#xff08;可跳过&#xff09;&#xff1a;CodeMan在熬夜肝一周SpringSecurity学习的时候&#xff0c;总是报错&#xff0c;于是冥思苦想&#xff0c;选择了询问Ai&#xff0c;但是不论怎么设置权限&#xff0c;接口仍然无法按所设想的权限被调用&#xff0c;于是在今天的…

牛顿插值法代替泰勒公式

引入 例题 近似函数&#xff1a; 通过这个近似函数可以看出&#xff0c;若要证的函数超过二阶可导&#xff0c;那么就不适合用牛顿插值法代替泰勒公式 因为&#xff0c;后面的操作非常复杂&#xff0c;不划算了… 总结 我们可以通过牛顿插值法生成一个逼近曲线的直线&#xf…