0%

Centos7安装Spark2.x

Centos7安装Spark2.x

安装前准备

创建hadoop用户

  • 添加hadoop用户
1
2
sudo useradd -m hadoop -s /bin/bash     # 创建hadoop用户
sudo passwd hadoop # 修改密码
  • 赋予hadoop管理员权限,修改/etc/sudoers文件,找到下面一行,如下图,然后在该行下面添加hadoop ALL=(ALL) ALL

img

  • 修改完毕,切换至hadoop用户,然后用命令su –,即可获得root权限进行操作。

安装vim、ssh和java

  • 安装vim
1
sudo yum install vim
  • 安装ssh,配置无密码登录
1
2
3
4
5
6
sudo yum install openssh-server
cd ~
mkdir .ssh # 可能该文件已存在,不影响
cd ~/.ssh/
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys # 加入授权
  • 解压jdk压缩包,配置环境变量
1
2
3
4
5
6
7
cd /home/hadoop
# -C 后面的压缩路径可以随便写
sudo tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/lib/jvm/
vim /etc/profile
# 在最下面添加如下内容
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
  • 使 JAVA_HOME 变量生效:
1
source ~/.bashrc    # 使变量设置生效

安装hadoop

1
2
3
4
5
cd /home/hadoop
sudo tar -zxvf ./hadoop-3.1.4.tar.gz -C /usr/local
cd /usr/local
sudo mv ./hadoop-3.1.4/ ./hadoop
sudo chown -R hadoop ./hadoop
  • hadoop-env.sh中添加JAVA_HOME变量
1
2
3
cd /usr/local/hadoop/etc/hadoop
vim hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_202
  • 进行伪分布式配置,修改配置文件 core-site.xml
1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
  • 修改配置文件 hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
  • 启动hadoop
1
2
3
4
cd /usr/local/hadoop
bin/hdfs namenode -format # namenode 格式化
sbin/start-dfs.sh # 开启守护进程
jps # 判断是否启动成功

安装Spark(local模式)

1
2
3
4
5
cd /home/hadoop
sudo tar -zxf ./spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.4.0-bin-without-hadoop/ ./spark
sudo chown -R hadoop:hadoop ./spark # 此处的 hadoop 为你的用户名
  • 安装后,还需要修改Spark的配置文件spark-env.sh
1
2
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
  • 编辑spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:
1
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
  • 配置完成后就可以直接使用,不需要像Hadoop运行启动命令。通过运行Spark自带的示例,验证Spark是否安装成功。
1
2
cd /usr/local/spark
bin/run-example SparkPi 2>&1 | grep "Pi is"

使用Spark Shell编写代码

启动Spark Shell

  • 启动Spark Shell后,会自动创建名为sc的SparkContext对象和名为spark的SparkSession对象
1
2
cd /usr/local/spark
bin/spark-shell

Snipaste_2020-12-15_14-27-32

加载text文件进行简单的RDD操作

  • spark创建sc,可以加载本地文件和HDFS文件创建RDD。这里用Spark自带的本地文件README.md文件测试。
1
2
3
4
5
6
7
8
9
val textFile = sc.textFile("file:///usr/local/spark/README.md")
//获取RDD文件textFile的第一行内容
textFile.first()
//获取RDD文件textFile所有项的计数
textFile.count()
//抽取含有“Spark”的行,返回一个新的RDD
val lineWithSpark = textFile.filter(line => line.contains("Spark"))
//统计新的RDD的行数
lineWithSpark.count()
  • 可以通过组合RDD操作进行组合,可以实现简易MapReduce操作
1
2
//找出文本中每行的最多单词数
textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
  • 更多RDD的操作,请访问Spark官方文档RDD操作

退出Spark Shell

1
:quit
-------------本文结束感谢您的阅读-------------