基于Linux的Spark安装与环境配置

基于Linux的Spark安装与环境配置

1、Hadoop测试

因为Spark是基于Hadoop上工作的,所以当我们使用Spark框架时,必须要确保Hadoop能够正常运行:

1.1 启动hadoop

cd /usr/local/hadoop
./sbin/start-all.sh

BUG,内容如下:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

解决方法:SLF4J:Failed to load class org.slf4j.impl.StaticLoggerBinder.

1.2 再次启动hadoop

cd /usr/local/hadoop/sbin
./start-all.sh

1.3 查看是否成功

jps

2、Scala安装与配置

2.1 下载scala

官方网址:https://www.scala-lang.org/download/2.13.10.html

使用wget命令下载scala:

wget https://downloads.lightbend.com/scala/2.13.10/scala-2.13.10.tgz

2.2 解压并重命名

sudo tar zxvf ~/下载/scala-2.13.10.tgz -C /usr/local/ # 解压

cd /usr/local
sudo mv scala-2.13.10 scala # 重命名

2.3 配置环境

# 1.编辑环境变量
sudo vi ~/.bashrc

# 2.使其生效
source ~/.bashrc

2.4 测试

scala -version

3、Spark安装与配置

3.1 下载Spark

下载网址:https://archive.apache.org/dist/spark/spark-3.2.2/

使用wget命令进行下载:

wget https://archive.apache.org/dist/spark/spark-3.2.2/spark-3.2.2-bin-hadoop3.2.tgz

3.2 解压并重命名

# 1.解压
sudo tar zxvf ~/下载/spark-3.2.2-bin-hadoop3.2.tgz  -C /usr/local

# 2.重命名
cd /usr/local
sudo mv spark-3.2.2-bin-hadoop3.2 spark

3.3 配置环境

# 1.编辑环境变量
sudo vi ~/.bashrc

# 2.使其生效
source ~/.bashrc

3.4 配置spark-env.sh

进入到配置目录并打开spark-env.sh文件:

cd /usr/local/spark/conf
sudo cp spark-env.sh.template spark-env.sh
sudo vi spark-env.sh

添加以下内容:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
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=192.168.3.134
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

3.5 配置slaves(好像不需要)

cd /usr/local/spark/conf
sudo vi workers.template

发现slaves文件里为localhost即本机地址,当前为伪分布式,因此不用修改!但要执行以下:

sudo cp workers.template  slaves

3.6 启动(报错)

启动sbin目录下的start-master.sh以及start-slaves.sh前提是hadoop已启动):

cd /usr/local/spark
sudo ./sbin/start-master.sh
sudo ./sbin/start-slaves.sh

报错!!!

3.7 测试

通过运行Spark自带的示例,验证Spark是否安装成功:

cd /usr/local/spark
./bin/run-example SparkPi

报错信息如下:

2022-11-01 20:49:24,377 WARN util.Utils: Your hostname, leoatliang-virtual-machine resolves to a loopback address: 127.0.1.1; using 192.168.3.134 instead (on interface ens33)

参考博客:Spark启动:WARN util.Utils: Your hostname, … resolves to a loopback address: …; using … instead

修改配置文件,配置 SPARK_LOCAL_IP 变量即可:

cd /usr/local/spark
sudo vim conf/spark-env.sh

# 添加以下内容:
export SPARK_LOCAL_IP=192.168.3.134  # 自己输出对应的IP

再次测试:

BUG解决!!!

执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤:

./bin/run-example SparkPi 2>&1 | grep "Pi is"

3.8 查看Spark版本

cd /usr/local/spark
./bin/spark-shell

  • 18
    点赞
  • 241
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
单链表是一种常见的数据结构,用于存储一系列的节点连接起来的数据。 在C语言中,我们可以使用结构体来定义一个节点,包含一个数据域和一个指向下一个节点的指针域。代码如下: ```c struct Node { int data; struct Node* next; }; ``` 然后,我们可以定义一个指向链表头部的指针,表示整个链表的起始位置。初始化链表时,这个指针可以指向NULL。 ```c struct Node* head = NULL; ``` 接下来,我们可以实现一些基本的操作,例如插入节点、删除节点、遍历链表等。 插入节点的过程包括创建一个新节点,并将其插入到链表中适当的位置。 ```c void insertNode(int value) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = value; newNode->next = NULL; if (head == NULL) { head = newNode; } else { struct Node* curr = head; while (curr->next != NULL) { curr = curr->next; } curr->next = newNode; } } ``` 删除节点的过程需要找到目标节点,并调整前后节点的指针。 ```c void deleteNode(int value) { if (head == NULL) { return; } if (head->data == value) { struct Node* temp = head; head = head->next; free(temp); return; } struct Node* prev = head; struct Node* curr = head->next; while (curr != NULL && curr->data != value) { prev = curr; curr = curr->next; } if (curr != NULL) { prev->next = curr->next; free(curr); } } ``` 遍历链表的过程是从头节点开始,依次打印每个节点的数据。 ```c void printList() { struct Node* curr = head; while (curr != NULL) { printf("%d ", curr->data); curr = curr->next; } printf("\n"); } ``` 这是一个简单的单链表的实现示例,你可以根据需要进一步扩展和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_leoatliang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值