在安装Spark3.0之前我们需要先安装Hadoop3.2。
环境:Ubuntu 16.04。
Hadoop 3.2伪分布式安装
安装Java JDK并配置好Java_HOME环境变量
Hadoop3.0之后的版本只支持Java8以后的版本。下载完jdk解压之后放置于/usr/lib/jvm下面(目录可以更改),下载完之后在/etc/profile中配置相关的环境变量。
export
保存后source /etc/profile
创建新的hadoop用户并赋予sudo权限
(为了增强安全性,还是新建一个Hadoop用户用来测试吧):
$useradd -m hadoop -s /bin/bash
下载Hadoop源码包并进行配置
从官网拉取安装包(不带src的安装包),拉取之后我们将其解压到目录/user/local目录下,并且将该目录重命名为hadoop。同时,我们还需要将hadoop目录设置为hadoop用户所有:sudo chown -R hadoop:hadoop hadoop。
配置SSH
伪分布式和全分布式都要配置SSH,进入到Hadoop目录之后,我们执行下面的命令,配置一下ssh。
'' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
配置相关的环境
配置文件放置在/opt/hadoop/etc/hadoop下面有许多个配置文件。我们修改其中的若干个:
hadoop-env.sh
export
注意的是,如果之前没有设置JAVA_HOME的环境变量,此处直接这样引用会出现错误,改用绝对路径即可消除错误。
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/nn</value>
</property>
<property>
<name>dfs.namenode.ch
eckpoint.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/dn</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<!-- 指定reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:///data/hadoop/yarn/nm</value>
</property>
</configuration>
创建相关目录并改owner为hadoop。
sudo mkdir -p /data/hadoop/hdfs/nn
sudo mkdir -p /data/hadoop/hdfs/dn
sudo mkdir -p /data/hadoop/hdfs/snn
sudo mkdir -p /data/hadoop/yarn/nm
sudo chown -R hadoop:hadoop /data
启动并验证安装成功 首先我们需要格式化文件系统bin/hdfs namenode -format 运行./sbin/start-all/sh之后浏览器输入localhost:8088看到Hadoop界面代表安装成功!
Spark3.0基于Hadoop3.2的安装
spark安装需要先安装scala,若没安装运行一下sudo apt install scala即可。
解压到安装目录并修改权限。
同样,类似Hadoop的安装,我们将资源包解压至目录usr/local下面,然后我们更改目录名称为spark,并将其权限设置为hadoop用户所有 sudo chown -R hadoop:hadoop spark。
配置相关文件并运行
配置/conf/spark-env.sh,将下列的配置添加至该文件中:
export
上述配置是我本机的目录配置,需要适当修改更改为当前机器的目录。 配置好相关文件之后启动即可:sbin/start-all.sh,此时输入jps命令后可以发现多了一个Master进程。访问localhost:8080,看到spark的主页就证明安装成功了!
正确性测试
那么我们安装完成之后怎么样才可以更方便的测试呢?又如何证明安装正确呢,对此我们为了更好用做了一些辅助脚本,方便我们进行运行测试:
辅助脚本:
由于我们把Hadoop和spark安装在文件夹/usr/local下面,我们干脆在此文件夹下新建一个文件夹help_bash来存放我们的帮助脚本: start.sh:这个脚本用于一键启动:
其实就是两行命令
/usr/local/hadoop/sbin/start-all.sh
/usr/local/spark/sbin/start-all.sh
stop.sh:这个脚本用于一键启动:其实同样也是两行命令:
/usr/local/hadoop/sbin/stop-all.sh
/usr/local/spark/sbin/stop-all.sh
run_env.sh:这个脚本用于设置相关的环境变量,便于我们更方便的执行:
export
同样的上述脚本的目录结构都是我本机的目录结构,如果目录不一致,需要做相应的更改!
测试运行
测试之前我们需要启动集群,并引入相关的环境变量方便我们测试,help_bash下运行:
$:./start.sh
$:source run_env.sh
下面我们做一个Word count进行测试: 首先我们需要准备一个.csv的文件,然后我们在Hadoop文件系统中新建一个test目录:hadoop fs -mkdir /test 然后我们把准备好的测试文件放入test目录:hadoop fs -put ceshi.csv /test 放入之后我们查看相关的目录结构:hadoop fs -ls -R /,发现ceshi.csv在目录中。 然后我们运行spark-shell
$
如果正确输出则证明安装成功!