Mac M3 Pro 部署Spark-2.3.2 On Hive-3.1.3

目录

1、下载安装包

2、解压安装

3、修改配置

 4、将spark的jars上传到hdfs

5、mysql中创建hive库

6、hive初始化数据库

7、启动Spark

8、启动HIVE

9、检查是否成功


mac的配置如下

1、下载安装包

官网

Apache Projects Releases

在search中搜索hadoop、hive

spark : Index of /dist/spark/spark-2.3.2

网盘

Hadoop https://pan.baidu.com/s/1p4BXq2mvby2B76lmpiEjnA?pwd=r62r 提取码: r62r

Hive  https://pan.baidu.com/s/12PUQfy_mi914wd6p7iWsBw?pwd=bnrr 提取码: bnrr

Spark二进制包  https://pan.baidu.com/s/1fJ5yRH_9K7VFlixBJ1MH1g?pwd=v987 提取码: v987

Spark源码打好的包 https://pan.baidu.com/s/1H0OxQOnuswBfoIZjNB8jEA?pwd=9yks 提取码: 9yks

Spark源码包 https://pan.baidu.com/s/1p_IRlhwT1eQxrIK3jVHbww?pwd=bhkx 提取码: bhkx

Zookeeper https://pan.baidu.com/s/1j6iy5bZkrY-GKGItenRB2w?pwd=irrx 提取码: irrx

mysql-connector-java-8.0.15.jar https://pan.baidu.com/s/1YHVMrG66lIHVHEH-jcUsVQ?pwd=4ipc 提取码: 4ipc

与hive兼容的spark版本可通过hive源码的pom.xml中查看

2、解压安装

Hadoop、Zookeeper 请查看

 Mac M3 Pro安装Hadoop-3.3.6-CSDN博客

Mac M3 Pro 安装 Zookeeper-3.4.6-CSDN博客

mysql 可直接使用 brew install mysql 进行安装

# 将安装包移动到目标目录
mv ~/Download/apache-hive-3.1.3-bin.tar.gz /opt/module
mv ~/Download/spark-2.3.2-bin-without-hadoop.tgz /opt/module

# 进入目标目录
cd /opt/module

# 解压安装包
tar -zxvf apache-hive-3.1.3-bin.tar.gz
tar -zxvf spark-2.3.2-bin-without-hadoop.tgz

# 修改目录名
mv apache-hive-3.1.3-bin hive
mv spark-2.3.2-bin-without-hadoop spark

# 添加mysql-connector-java-8.0.15.jar到lib目录
mv ~/Download/mysql-connector-java-8.0.15.jar /opt/module/hive/lib

# 添加环境变量

sudo vim /etc/profile

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk8/Contents/Home"
export MYSQL_HOME="/opt/homebrew/Cellar/mysql@8.0/8.0.36_1"

export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/opt/module/hadoop
export JAVA_LIBRARY_PATH="$HADOOP_HOME/lib/native"
export HADOOP_COMMON_LIB_NATIVE_DIR="$HADOOP_HOME/lib/native"
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HIVE_HOME=/opt/module/hive
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
export HADOOP_USER_NAME=hdfs
export SPARK_HOME=/opt/module/spark
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH="$JAVA_HOME/bin:$MYSQL_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SPARK_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH:."

# 保存后使其生效
source /etc/profile

3、修改配置

cd /opt/module/hive/conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
vim hive-env.sh
# 添加
export HADOOP_HEAPSIZE=4096

vim hive-site.xml

# 下面的内容与本地环境比较,存在的则修改,不存在的则添加
<property>
    <name>hive.execution.engine</name>
    <value>spark</value>
  </property>
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
  </property>
   <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
  </property>
  <!--元数据是否校验-->
   <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
  </property>
   <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
  </property>
  <property>
    <name>spark.yarn.jars</name>
    <value>hdfs:///spark/spark-jars/*.jar</value>
  </property>
  <property>
    <name>hive.spark.client.connect.timeout</name>
    <value>1000ms</value>
  </property>
  <property>
    <name>hive.exec.scratchdir</name> 
    <value>/tmp/hive</value>
  </property>
  <property>
    <name>hive.querylog.location</name>
    <value>${java.io.tmpdir}/${user.name}</value>
  </property>
   <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
  </property>
  
  <property>
    <name>hive.server2.webui.host</name>
    <value>0.0.0.0</value>
  </property>
  
   <property>
    <name>hive.server2.webui.port</name>
    <value>10002</value>
  </property> 
  
   <property>
    <name>hive.server2.long.polling.timeout</name>
    <value>5000ms</value>
  </property>
  
   <property>
    <name>hive.server2.enable.doAs</name>
    <value>false</value>
  </property>
  
  <property>
    <name>spark.home</name>
    <value>/opt/module/spark</value>
  </property> 
  <property>
    <name>spark.master</name>
    <value>spark://127.0.0.1:7077</value>
  </property>
    <property>
        <name>spark.submit.deployMode</name>
        <value>client</value>
    </property> 
    <property>
        <name>spark.eventLog.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>spark.eventLog.dir</name>
        <value>hdfs:///spark/log</value>
    </property>
    <property>
        <name>spark.serializer</name>
        <value>org.apache.spark.serializer.KryoSerializer</value>
    </property>
    <property>
        <name>spark.executor.memeory</name>
        <value>8g</value>
    </property>
    <property>
        <name>spark.driver.memeory</name>
        <value>8g</value>
    </property>
    <property>
        <name>spark.executor.extraJavaOptions</name>
        <value>-XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"</value>
    </property>
    <property>
        <name>hive.support.concurrency</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.exec.dynamic.partition.mode</name>
        <value>nonstrict</value>
    </property>
cd /opt/module/spark/conf
cp slaves.template slaves
vim slaves

# 末尾添加
127.0.0.1

cp spark-env.sh.template spark-env.sh

vim spark-env.sh

# 末尾添加

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk8/Contents/Home
export SPARK_DIST_CLASSPATH=$(/opt/module/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop/

export SPARK_MASTER_HOST=127.0.0.1
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_HOST=127.0.0.1
export SPARK_LOCAL_IP=127.0.0.1
export SPARK_EXECUTOR_MEMORY=8192m

cp spark-defaults.conf.template spark-defaults.conf

vim spark-defaults.conf

# 末尾添加

spark.master                     spark://master:7077
spark.home                       /opt/module/spark
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs:///spark/log
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.executor.memory            4g
spark.driver.memory              4g
spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
spark.yarn.archive               hdfs:///spark/jars/spark2.3.2-without-hive-libs.jar
spark.yarn.jars                  hdfs:///spark/jars/spark2.3.2-without-hive-libs.jar


# 拷贝hive-site.xml到spark的conf目录

cp /opt/module/hive/conf/hive-site.xml /opt/module/spark/conf

 4、将spark的jars上传到hdfs

# hdfs上创建必要的目录
hdfs dfs -mkdir /tmp
hdfs dfs -mkdir /tmp/hive
hdfs dfs -mkdir /tmp/logs
hdfs dfs -mkdir /tmp/spark

hdfs dfs -mkdir /spark
hdfs dfs -mkdir /spark/jars
hdfs dfs -mkdir /spark/spark-jars
hdfs dfs -mkdir /spark/log

# 安装目录创建目录
mkdir -p  $SPARK_HOME/work  $SPARK_HOME/logs  $SPARK_HOME/run
mkdir -p  $HIVE_HOME/logs

# Spark 安装包默认会缺少 log4j slf4j 和 hadoop-comment之类的jar包,需要从hadoop、hive按照包目录中去复制到jars下去,如果没有就从开发时的maven仓库中去拷贝,或者到下载的spark-package-2.3.2.tgz中获取

slf4j-api-1.7.21.jar
slf4j-log4j12-1.7.21.jar
log4j-1.2-api-2.17.1.jar
log4j-api-2.17.1.jar
log4j-core-2.17.1.jar
log4j-slf4j-impl-2.17.1.jar
log4j-web-2.17.1.jar
hadoop-common-3.3.6.jar
spark-network-common_2.11-2.3.2.jar

# 进入spark安装包目录,将jars进行打包
cd /opt/module/spark

jar cv0f spark-2.3.2-without-hive-libs.jar -C ./jars .

# 在hdfs上创建存放jar包目录
hdfs dfs -put spark2.3.2-without-hive-libs.jar /spark/jars/
hdfs dfs -put jars/* /spark/spark-jars

5、mysql中创建hive库

CREATE DATABASE hive;

6、hive初始化数据库

cd /opt/module/hive/bin

schematool -initSchema -dbType mysql --verbose

7、启动Spark

# 先跑一下测试示例验证spark是否正常
cd /opt/module/spark/bin

spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--driver-memory 1G \
--num-executors 3 \
--executor-memory 1G \
--executor-cores 1 \
/opt/module/spark/examples/jars/spark-examples_*.jar 10

# 如果出现下面的计算结果则表示成功
Pi is roughly 3.1391191391191393

# 启动spark
cd ..
./bin/start-all.sh

# 通过jps查看进程是否正常
jps -l

# 查看是否有如下进程
org.apache.spark.deploy.master.Master
org.apache.spark.deploy.worker.Worker
org.apache.spark.executor.CoarseGrainedExecutorBackend

# 如未启动成功请到日志目录中/opt/module/spark/logs 查看时间为最近的日志文件,根据报错进程排查
# 启动成功后可访问web ui界面,打开地址 http://127.0.0.1:8080/

8、启动HIVE

cd /opt/module/hive

nohup ./bin/hive --service metastore &
nohup ./bin/hive --service hiveserver2 &

# 检查是否启动成功

ps -ef | grep HiveMetaStore

ps -ef | grep hiveserver2

# 如果启动失败 可以tail -999f nohup.out文件

# 如果成功则可以看下hive的webui界面,http://127.0.0.1:10002/

9、检查是否成功

# 使用beeline 进入hive
beeline -u 'jdbc:hive2://127.0.0.1:10000'

select version();

select current_user();

set hive.execution.engine;

# 创建表 t1

CREATE TABLE `t1`(`id` bigint,`name` string,`address` string);

# 向表t1中插入数据

INSERT INTO t1 VALUES(1,'one','beijing'),(2,'two','shanghai'),(3,'three','guangzhou'),(4,'four','shenzhen'),(5,'five','huzhou'),(6,'six','jiaxing'),(7,'seven','ningbo'),(8,'eight','shaoxing'),(9,'nine','nanjing');

10、执行表操作后查看控制台

参考地址

https://blog.csdn.net/qq_35745940/article/details/122152096

https://www.cnblogs.com/lenmom/p/10356643.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/722879.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Github Copilot 用账号登录,完美支持chat,不妨试试

Github Copilot 代码补全等功能&#xff0c;提高写代码的效率 获取地址&#xff1a;https://web.52shizhan.cn/activity/copilot 如果之前是激活器激活的&#xff0c;请到环境变量里删除相关的copilot配置。 ① 发你注册的github账号的邮箱或用户名给客服&#xff0c;客服邀…

产品Web3D交互展示有什么优势?如何快速制作?

智能互联网时代&#xff0c;传统的图片、文字、视频等产品展示方式&#xff0c;因为缺少互动性&#xff0c;很难引起用户的兴趣&#xff0c;已经逐渐失去了宣传优势。 Web3D交互展示技术的出现&#xff0c;让众多品牌和企业找到了新的方向&#xff0c;线上产品展示不在枯燥无趣…

红海云CEO孙伟获2024“新锐企业家”荣誉

近日&#xff0c;由羊城晚报报业集团联合广东软件行业协会主办的“2024广东软件风云榜”活动圆满落下帷幕&#xff0c;红海云CEO孙伟以新技术、新业态、新模式&#xff0c;带领企业取得创新发展&#xff0c;荣膺2024广东软件风云榜“新锐企业家”称号。 为把握广东省数字经济和…

C/S、B/S架构(详解)

一、CS、BS架构定义 CS架构&#xff08;Client-Server Architecture&#xff09;是一种分布式计算模型&#xff0c;其中客户端和服务器之间通过网络进行通信。在这种架构中&#xff0c;客户端负责向服务器发送请求&#xff0c;并接收服务器返回的响应。服务器则负责处理客户端的…

南充文化旅游职业学院领导一行莅临泰迪智能科技参观交流

6月18日&#xff0c;南充文化旅游职业学院旅游系副书记刘周、教务处教学运行与质量保障科科长及智慧旅游技术应用专业教研室主任李月娴、大数据技术专业负责人 龙群才、大数据技术专业专任教师 李昱洁莅临泰迪智能科技产教融合实训中心参观交流。泰迪智能科技董事长张良均、副总…

白酒:酒文化与艺术创作的结合

酒文化与艺术创作在历史长河中相互交融&#xff0c;共同发展。云仓酒庄的豪迈白酒作为中国的酒的品牌&#xff0c;以其与众不同的口感和品质&#xff0c;成为了艺术创作的重要灵感来源。 首先&#xff0c;豪迈白酒的酿造技艺本身就是一种与众不同的艺术。酿酒师傅们在传承古老技…

springmvc拦截器 和 异常拦截器

springmvc拦截器的配置使用&#xff1a; 自定义监听器实现HandlerInterceptor接口&#xff1a; 在springmvc的配置文件中引入自定义拦截器对象及拦截目标 拦截器的方法调用 自定义一个拦截器&#xff1a; Component public class LoginInterceptor implements HandlerIntercept…

上位机图像处理和嵌入式模块部署(h750 mcu和usb虚拟串口)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于mcu usb而言&#xff0c;大部分情况下&#xff0c;它和上位机之间的关系都是device的关系。一般usb&#xff0c;可以分成host和device。如果mc…

【调试笔记-20240611-Linux-配置 OpenWrt-23.05 支持泛域名 acme 更新】

调试笔记-系列文章目录 调试笔记-20240611-Linux-配置 OpenWrt-23.05 支持泛域名 acme 更新 文章目录 调试笔记-系列文章目录调试笔记-20240611-Linux-配置 OpenWrt-23.05 支持泛域名 acme 更新 前言一、调试环境操作系统&#xff1a;Windows 10 专业版调试环境调试目标 二、调…

Python10 python多线程

1.什么是python多线程 Python的多线程指的是在一个Python程序中同时运行多个线程&#xff0c;以达到并发执行多个任务的目的。线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。 在Python中&#xff0c;多线程的…

【Hudi】基础概念-数据写

目录 数据写写操作写流程(UPSERT)写流程(Insert)写流程(Insert Overwrite)Key生成策略删除策略 数据写 写操作 UPSERT&#xff1a;默认行为&#xff0c;数据先通过index打标&#xff0c;有一些启发式算法决定消息的组织以及优化文件的大小>CDC导入INSERT:跳过index,写入效…

(已解决) Github无法显示图像问题

Github无法显示图像的问题 问题描述初次尝试最终解决 问题描述 今天打开github&#xff0c;创建了一个仓库&#xff0c;想从本地把一些最近做的东西传上来(git add . > git commit -m “xxx” > git push)&#xff0c;结果发现东西是成功传上来了&#xff0c;但是图片没…

简单好用的C++日志库spdlog使用示例

文章目录 前言一、spdlog的日志风格fmt风格printf风格 二、日志格式pattern三、sink&#xff0c;多端写入四、异步写入五、注意事项六、自己封装了的代码usespdlog.h封装代码解释使用示例 前言 C日志库有很多&#xff0c;glog&#xff0c;log4cpp&#xff0c;easylogging, eas…

PDF为何成为职场必备?编辑不求人,这几款工具助你一臂之力

不管是工作和学习&#xff0c;我们使用PDF文档的频率非常高&#xff0c;但是说起为什么要用PDF&#xff0c;却又只知其一不知其二。 为什么我们需要PDF&#xff1f; PDF&#xff0c;全称为Portable Document Format&#xff08;可移植文件格式&#xff09;&#xff0c;是一种…

【电机】PID参数整定方法

1 试凑法 采样周期的选择&#xff0c;要根据所设计的系统的具体情况&#xff0c;用试凑的方法&#xff0c;在试凑过程中根据各种合理的建议来预选采样周期&#xff0c;多次试凑&#xff0c;选择性能较好的一个作为最后的采样周期。早整定参数时必须要认真的观察系统的相应情况…

低代码专题 | 低代码开发平台怎么收费,价格多少?一文揭秘!

低代码开发平台近几年真的火得一塌糊涂&#xff0c;不少企业都开始关注并尝试这种新的开发方式。 然而&#xff0c;关于低代码开发平台的收费问题&#xff0c;却是众说纷纭、信息零散。为了帮助大家更清晰地了解低代码开发平台的收费情况&#xff0c;这篇文章将进行全面的解读…

【STM32】使用标准库检测按键

按键检测使用到GPIO外设的基本输入功能。 1.硬件设计 作者使用的硬件没有按键模块。故使用了一个引脚模拟按键&#xff0c;将PWM1引脚拉低表示按键按下。思路如下&#xff1a;PWM1配置为输入&#xff0c;默认拉高&#xff0c;PWM1手动接地来模拟按下按键&#xff0c;此时PWM&a…

如何做好亚马逊、速卖通自养号测评?这些细节很重要

亚马逊&#xff0c;作为电商领域的领军者&#xff0c;吸引了无数卖家入驻。在这片竞争激烈的土地上&#xff0c;Review成为了卖家们展现实力、赢得消费者信任的关键。 Review不仅反映了产品的质量和卖家的服务&#xff0c;更是消费者选择购买的重要因素。因此&#xff0c;对于卖…

收入公平性评估方法

一、Gini系数## 1.1什么是基尼系数## 基尼系数是国际上用来综合考察居民内部收入分配差异状况的一个重要分析指标。每个人的收入有多有少&#xff0c;差距大时&#xff0c;基尼系数就高&#xff1b;差距小时&#xff0c;基尼系数就低。 1.2基本概念## 基尼系数表示在全部居民收…

js语法---理解防抖原理和实现方法

什么是防抖&#xff08;节流&#xff09; 在实际的网页交互中&#xff0c;如果一个事件高频率的触发&#xff0c;这会占用很多内存资源&#xff0c;但是实际上又并不需要监听触发如此多次这个事件&#xff08;比如说&#xff0c;在抢有限数量的优惠券时&#xff0c;用户往往会提…