Spark SQL配置记录总结-20230410

一、安装Hadop

1. 安装Java

安装jdk-11

# 安装jdk-8
sudo apt install openjdk-11-jdk

# 查看Java版本
java -version

配置环境变量,这里使用apt install安装,并没有把JAVA_HOME内置到环境变量,那么我们先看下java安装到哪里了。java是由alternatives管理的,即可以在系统中设置并切换多个jdk版本。

使用update-alternatives --config java查看系统可用java版本,如下所示,可以得到Java的安装路径为:/usr/lib/jvm/java-11-openjdk-arm64/

liujianguo@ubuntu:~/MyTestForAutoNUMA$ update-alternatives --config java
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-11-openjdk-arm64/bin/java

设置JAVA_HOME

# 设置当前工作目录
cd /etc/profile.d

# 在此目录下新建文件
vim my_env.sh

# 在文件中编辑以下内容:
# JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64/
export PATH=$PATH:$JAVA_HOME/bin

# 保存退出后,重新加载环境变量
source /etc/profile

# 查看环境变量加载是否成功
echo $JAVA_HOME

2. 配置无密登录

为避免在操作过程中频繁输入密码,需要配置免密登录。

# 到ssh配置文件目录下
liujianguo@ubuntu:~/.ssh$ pwd
/home/liujianguo/.ssh

# 生成公钥和私钥
ssh-keygen -t rsa
# 然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
# 将公钥拷贝到要免密登录的目标机器上
cat ./id_rsa.pub >> ./authorized_keys # 配置登录本机免密

3. 安装Hadoop

(1) 下载解压

官网上下载安装软件包,选择对应版本的编译好的安装包进行下载。

在这里插入图片描述

我的机器为ARM架构的鲲鹏920 CPU,因此下载binary-aarch64软件包:

# 下载安装包
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5-aarch64.tar.gz

# 解压软件包到 /opt/module/ 目录下
tar -zxvf hadoop-3.3.5-aarch64.tar.gz -C /opt/module/

(2) 配置环境变量

# 打开之前配置JAVA_HOME的文件
vim /etc/profile.d/my_env.sh

# 在文件中追加以下内容:
# HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.5-aarch64
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

# 保存退出后,更新环境变量
source /etc/profile

# 查看安装是否成功
hadoop version

(3) 配置集群

配置本机伪分布式集群,即:

localhost
HDFSNmaeNode SecondaryNameNode DataNode
YARNResourceManager NodeManager

需要在/opt/module/hadoop-3.3.5/etc/hadoop目录下配置文件:core-site.xml, hdfs-site.xml,yarn-site.xml, mapred-site.xml,具体配置方法,可以参考课程尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优)

# 当前工作目录
cd $HADOOP_HOME/etc/hadoop
# 编辑文件core-site.xml
vim core-site.xml
# 根据需求修改以下内容,此处仅介绍配置含义,根据自己需求进行配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>atguigu</value>
    </property>
</configuration>
# 修改好后,保存退出

# 编辑文件hdfs-site.xml
vim hdfs-site.xml
# 根据需求修改以下内容,此处仅介绍配置含义,根据自己需求进行配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>
# 修改好后,保存退出

# 编辑文件yarn-site.xml
vim yarn-site.xml
# 根据需求修改以下内容,此处仅介绍配置含义,根据自己需求进行配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>

    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>
# 修改好后,保存退出

# 编辑文件mapred-site.xml
vim mapred-site.xml
# 根据需求修改以下内容,此处仅介绍配置含义,根据自己需求进行配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
# 修改好后,保存退出

若需要配置历史服务器,需要在文件中追加以下内容

# 配置历史服务器,编辑文件mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

(4) 启动集群

可以通过以下命令启动hdfsyarn

# 当前工作目录
liujianguo@ubuntu:/opt/module/hadoop-3.3.5/sbin$ pwd
/opt/module/hadoop-3.3.5/sbin

# 启动 hdfs 和 yarn
./start-dfs.sh
./start-yarn.sh

# 停止 hdfs 和 yarn
./stop-dfs.sh
./stop-yarn.sh

# 启动历史服务器
./mr-jobhistory-daemon.sh start historyserver

# 停止历史服务器
mr-jobhistory-daemon.sh stop historyserver

4. 常见Hadoop网页端口位置

Web端查看HDFS的NameNode

Web端查看YARN的ResourceManager

Web端查看JobHistory

http://hadoop102:19888/jobhistory

二、安装Hive

1. 下载hive

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/,在该网页可以下在不同版本的hive。

在这里插入图片描述

通过以下命令下载解压hive软件安装包

# 下载软件安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-4.0.0-alpha-2/apache-hive-4.0.0-alpha-2-bin.tar.gz

# 解压软件安装包到 /opt/module 目录下
tar -zxvf apache-hive-3.1.2- bin.tar.gz -C /opt/module/

2. 配置环境变量

# 打开之前配置JAVA_HOME的文件
vim /etc/profile.d/my_env.sh

# 在文件中追加以下内容:
# HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

# 保存退出后,更新环境变量
source /etc/profile

3. 配置hive-env.sh

# 当前工作目录
pwd
/opt/module/apache-hive-4.0.0-alpha-2-bin/conf

# 拷贝模板文件
cp hive-env.sh.template hive-env.sh

# 编译hive-env.sh文件
vim hive-env.sh
# 在hive-env.sh中追加Hadoop的安装路径
HADOOP_HOME=/usr/local/hadoop/hadoop-3.3.5

4. hive 元数据配置到MySQL(可选)

需要提前安装好MySQL

修改MySQL库下的user表中的root用户允许任意IP连接

mysql> update mysql.user set host='%' where user='root';
mysql> flush privileges;

去MySQL官网找GA version下载

在这里插入图片描述

通过以下命令解压到/opt/module/apache-hive-4.0.0-alpha-2-bin/lib目录下

# 获取包
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.32.tar.gz

# 解压到hive的库文件目录下
tar -zxvf mysql-connector-j-8.0.32.tar.gz
cp mysql-connector-j-8.0.32.jar /opt/module/apache-hive-4.0.0-alpha-2-bin/lib

在$HIVE_HOME/conf 目录下新建 hive-site.xml 文件

vim $HIVE_HOME/conf/hive-site.xml
# 在文件中添加以下内容,此处仅介绍配置含义,根据自己需求进行配置
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 连接的 URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>

<!-- jdbc 连接的 Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>

<!-- jdbc 连接的 username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>

<!-- jdbc 连接的 password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>000000</value>
</property>

<!-- Hive 元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>

<!--元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>

<!-- Hive 默认在 HDFS 的工作目录 -->
<property>

启动hadoop,在hadoop中创建hive需要用到的目录并设置权限。

$ start-all.sh #启动hadoop
$ hadoop fs -mkdir /tmp
$ hadoop fs -mkdir -p /user/hive/warehouse
$ hadoop fs -chmod g+w /tmp
$ hadoop fs -chmod g+w /user/hive/warehouse

5. 初始化元数据库

在初次启动hive时,需要提前初始化元数据库

当使用 hive 自己的元数据库时,可以使用以下命令初始化元数据库

# 当前工作目录
pwd
/opt/module/apache-hive-4.0.0-alpha-2-bin

# 初始化元数据库
bin/schematool -dbType derby -initSchema

当把 hive 元数据配置到 Mysql 时,通过以下命令初始化元数据库,但注意,此时需要提前进行相关配置。

# 当前工作目录
pwd
/opt/module/apache-hive-4.0.0-alpha-2-bin

# 初始化元数据库
schematool -initSchema -dbType mysql - verbose

6. 启动hive

(1) 通过以下命令启动hive

# 启动hive
bin/hive

(2) 若使用元数据的方式访问hive,此时需要在hive-site.xml文件中添加如下配置信息:

<!-- 指定存储元数据要连接的地址 -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://hadoop102:9083</value>
</property>

启动meta store

# 前启动元数据服务
hive --service metastore
# 然后启动hive
/bin/hive

(3) 使用JDBC方式访问hive,此时需要在hive-site.xml中添加以下配置信息:

<!-- 指定 hiveserver2 连接的 host -->
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>hadoop102</value>
</property>

<!-- 指定 hiveserver2 连接的端口号 -->
<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
</property>

启动 hiveserver2

# 启动 hiveserver2
bin/hive --service hiveserver2 

# 启动belline客户端
bin/beeline -u jdbc:hive2://hadoop102:10000 -n atguigu

此处具体配置方法可以参考课程:尚硅谷大数据Hive教程(基于hive3.x丨hive3.1.2)

三、 安装spark sql

1. 下载Spark

从官网(https://spark.apache.org/downloads.html)下载Spark

# 下载Spark
wget https://dlcdn.apache.org/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz

# 解压到 /opt/module/ 目录下
tar -zxvf spark-3.3.2-bin-hadoop3.tgz -C /opt/module/

2. 配置环境变量

# 打开之前配置JAVA_HOME的文件
vim /etc/profile.d/my_env.sh

# 在文件中追加以下内容:
# SPARK_HOME
export SPARK_HOME=/opt/module/spark-3.3.2-bin-hadoop3
export PATH=$PATH:$SPARK_HOME/bin
export PATH=$PATH:$SPARK_HOME/sbin

# 保存退出后,更新环境变量
source /etc/profile

3. 配置spark-env.sh

该文件中配置影响spark的运行性能,具体配置参数,可以参考相关文章。

# 当前工作目录
pwd
/opt/module/spark-3.3.2-bin-hadoop3/conf

# 拷贝spark-env.sh
cp spark-env.sh.template spark-env.sh

# 编辑spark-env.sh,启动java,hadoop等具体路径根据自己实际环境设置。
vim spark-env.sh
# 在spark-env.sh中添加以下内容
export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SCALA_HOME=/usr/local/scala
export SPARK_HOME=/usr/local/spark
export SPARK_MASTER_IP=127.0.0.1
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8099
export SPARK_WORKER_CORES=3
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=5G
export SPARK_WORKER_WEBUI_PORT=8081
export SPARK_EXECUTOR_CORES=1
export SPARK_EXECUTOR_MEMORY=1G
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$HADOOP_HOME/lib/native

4. 配置works

根据自己的集群规划配置works,具体配置可以参考课程尚硅谷大数据Spark教程从入门到精通

# 当前工作目录
pwd
/opt/module/spark-3.3.2-bin-hadoop3/conf

# 拷贝workers模板
cp workers.template workers

# 打开文件
vim workers

# 根据需求配置集群,默认是localhost
localhost

5. 简略日志(可选)

# 当前工作目录
pwd
/opt/module/spark-3.3.2-bin-hadoop3/conf

# 拷贝模板文件,并编辑文件log4j.properties
cp log4j.properties.template log4j.properties
vim log4j.properties

# 在文件中修改以下内容
# Set everything to be logged to the console
rootLogger.level = warn # 将此处改为warn
rootLogger.appenderRef.stdout.ref = console

6. 配置历史服务器

# 当前工作目录
pwd
/opt/module/spark-3.3.2-bin-hadoop3/conf

# 拷贝模板文件,并编辑spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf

# 在spark-defaults.conf中添加以下内容
spark.eventLog.enabled true
spark.eventLog.dir hdfs://192.168.1.2:9000/spark/historyLog
spark.history.fs.logDirectory hdfs://192.168.1.2:9000/spark/historyLog
# spark.eventLog.compress true # 可以设置保存历史日志时进行压缩

7. Spark整合Hive的MetaStore

前提:已经根据文章前面的方法配置好Hive的元数据库(MeataStore)

SparkSQL 整合 Hive 的 MetaStore 主要思路就是要通过配置能够访问它, 并且能够使用 HDFS 保存 WareHouse, 这些配置信息一般存在于 Hadoop 和 HDFS 的配置文件中, 所以可以直接拷贝 Hadoop 和 Hive 的配置文件到 Spark 的配置目录

# 当前工作目录
pwd
/opt/module/hadoop-3.3.5/etc/hadoop

# 将当前工作目录下的文件hive-site.xml core-site.xml hdfs-site.xml拷贝到/opt/module/spark-3.3.2-bin-hadoop3/conf目录下。
cp hive-site.xml core-site.xml hdfs-site.xml /opt/module/spark-3.3.2-bin-hadoop3/conf   

拷贝配置文件的目的

Spark 需要 hive-site.xml 的原因是, 要读取 Hive 的配置信息, 主要是元数据仓库的位置等信息
Spark 需要 core-site.xml 的原因是, 要读取安全有关的配置
Spark 需要 hdfs-site.xml 的原因是, 有可能需要在 HDFS 中放置表文件, 所以需要 HDFS 的配置

接着可以参考文章Spark SQL 快速入门系列(五)SparkSQL 访问 Hive验证配置是否正确。

8. 启动

(1) 启动Local环境

所谓的 Local 模式,就是不需要其他任何节点资源就可以在本地执行 Spark 代码的环境,一般用于教学,调试,演示等,之前在 IDEA 中运行代码的环境我们称之为开发环境,不太一样。

# 打开spark-shell
bin/spark-shell

# 退出spark-shell
:q
# 或
Ctrl+C
# 或
:quit

(2) Standalone模式

local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,这里我们来看看只使用 Spark 自身节点运行的集群模式,也就是我们所谓的独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的 master-slave 模式。

记得将spark的jar包上传到hdfs中。否则会报错Error: Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster。

# 当前工作目录
pwd
/opt/module/spark-3.3.2-bin-hadoop3/sbin

# 启动spark master
./start-master.sh

# 停止spark master
./stop-master.sh

# 启动历史服务器
./start-history-server.sh

# 停止历史服务器
./stop-history-server.sh

9. Spark Web接口位置

Local模式,网文Web UI

  • 在spark-shell启动成功后,在http://虚拟机地址:4040查看

Standalone 模式

  • 查看 Master 资源监控 Web UI 界面: http://linux1:8080

参考文章

  1. Ubuntu下快速安装JDK并设置JAVA_HOME

  2. 尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优)

  3. Hadoop on ARM部署实践

  4. ubuntu18.04搭建hadoop

  5. Hadoop历史服务器配置详细步骤

  6. ubuntu18.04搭建hive

  7. mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法

  8. [HIVE Illegal character entity: expansion character (code 0x8 at [row,col,system-id]: 3215,96,“file(https://blog.csdn.net/walykyy/article/details/112250390)

  9. 启动hive metastore命令

  10. ubuntu18.04安装spark(伪分布式)

  11. 尚硅谷大数据Spark教程从入门到精通

  12. Spark History Server配置

  13. Spark SQL 快速入门系列(五)SparkSQL 访问 Hive

  14. HDFS之五:Hadoop 拒绝远程 9000 端口访问

  15. 解决There are 0 datanode(s) running and no node(s) are excluded in this operation.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值