spark3编译安装

       由于本人最近在做一个baseline实验,需要使用到spark sql来连接hive,数据保存在hdfs中。通过本人这几天的不断摸索,终于在实验室服务器上部署完成,现记录安装过程以防未来翻车。以下所有的安装部署都是基于单机版,集群版还在探索中ing。。。。。

Prerequisite:

1、JAVA

2、SCALA

3、Hdfs

4、Hive

5、Spark

实验环境:Centos

下面逐一来进行安装部署。


1、JAVA环境安装

       本实验中使用的是JAVA8。由于sun公司被oracle收购了,导致现在java安装包下载略有点麻烦(从官网下载的话需要注册oracle账号),安装包就自己解决把。不过需要注意的是,最好下载二进制压缩文件或者rpm也可。(实在找不到安装包的小伙伴,可私信博主哦)

       将下载好的安装包解压缩到某个路径下(这里提醒一下各看官最好是统一管理,不要东一个文件西一个文件)。使用如下代码段进行解压。

tar -zxvf 你的安装包路径 -C 你要解压到的路径

注意解压完之后安装包,需要配置一下你的路径。各大博客都是说在etc/profile中配置路径,但是这个文件只有root用户才有权限进行修改哦。因此作为卑微的普通用户,这里建议在bashrc中导入路径。

vi ~/.bashrc

使用vi编辑器来修改bashrc(不会使用vi编辑器的请自行google),导入你的java安装路径,也就是解压后的路径。

export JAVA_HOME=你的java安装路径
export PATH=$JAVA_HOME/bin:$PATH

修改完后bashrc,需要使得你修改的路径有效,输入如下命令将你的修改有效。

source ~/.bashrc

按上述步骤后,java环境就已经配置好啦,java环境配置好后,输入java -version,如果看到版本信息则说明java环境已经安装成功啦!

恭喜你在spark部署的路上迈出了第一步!!!

2、SCALA环境安装

       虽然spark官方说,spark内置了scala环境,但咱们需要编译spark源码,因此还是配置一下scala环境保险一点,毕竟也就几行代码的事。(安装包请自行下载)这里请注意,scala的版本和spark版本需要互相对应,如果是spark3的话,最好是使用scala2.13.4以上的版本。

tar -zxvf scala安装包路径 -C 要解压到的路径

同样的,配置路径,这里将代码放一起,可参考java的安装步骤。

#打开编辑器
vi ~/.bashrc

#导入路径
export SCALA_HOME=scala的解压路径
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$PATH

#生效
source ~/.bashrc

上述步骤完成后,输入scala -version,如果看到版本信息则说明scala环境已经安装成功。

3、Hdfs部署

hdfs是apache hadoop的一个子项目,是一个分布式文件系统,可用来存储共享大文件。由于hadoop中的mapreduce等目前还无需求,因此只安装部署hdfs。

本实验中使用的是hadoop3-.2.2, 下载地址为:Apache Hadoop

解压缩安装包

tar -zxvf hadoop安装包 -C 你要解压到的路径

配置路径

#打开编辑器
vi ~/.bashrc

#导入路径
export HADOOP_HOME=hadoop解压路径
export PATH=%JAVA_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$PATH

#使修改生效
source ~/.bashrc

修改配置文件

以下操作均在hadoop安装路径的etc/hadoop路径下进行。

(1)修改hadoop-env.sh,在文件最下面输入如下语句。

export JAVA_HOME=java的安装路径
export HADOOP_HOME=hadoop安装路径

(2)修改core-site.xml, 将core-site.xml修改成如下内容,端口号如果冲突可换成另一个无冲突的端口号。

<configuration>
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9001</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:你自己创建的tmp目录路径</value>
</property>
</configuration>

(3)修改hdfs-site.xml,将hdfs-site.xml修改成如下内容。端口号如遇冲突,可换成其他端口号。

<configuration>

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:namenode数据保存路径</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:datanode数据保存路径</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

<property>
    <name>dfs.https.address</name>
    <value>localhost:9870</value>
</property>
</configuration>

上面修改配置文件中的路径,都需要自己另行创建(随便创建在哪个目录下,不过最好统一组织一下)。

(4)配置免密登录。

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

输入 ssh localhost,如果出现Last Login的字样,则免密登录设置成功。

至此,hdfs环境已经配置好啦,现在开始测试hdfs是否配置成功。初次启动hdfs,需要对namenode进行格式化。

hdfs namenode -format

cd到hadoop安装路径下的sbin目录下,输入./start-dfs.sh,再输入jps,若出现如下图,则说明hdfs启动成功。

最后测试webUI是否成功,在浏览器中输入https://ip地址//9870,如果网页加载不成功,请考虑端口号是否出现冲突的情况。

4、Hive安装部署

hive安装除了上述环境后,还需要mysql来保存元数据,本实验中使用的是mariadb。mariadb或者mysql安装教程请自行google,需要注意的是需要将mariadb的编码修改成utf-8。

hive安装包下载地址:https://archive.apache.org/dist/hive/hive-3.1.0/

解压压缩包,并配置路径。

tar -zxvf hive安装包 -C 你要解压到的路径

vi ~/.bashrc

export HIVE_HOME=你的解压路径
export PATH=$HIVE_HOME/bin:$PATH

source ~/.bashrc

(1)修改hive配置文件。

HIVE的所有配置文件都在$HIVE_HOME的conf文件下,所有的修改操作都需要cd到conf文件下进行操作。

修改hive-env.sh文件

cp hive-env.sh.template hive-env.sh
vi hive-env.sh

#在文件尾部添加如下内容
export JAVA_HOME=你的java安装路径
export HADOOP_HOME=你的hadoop安装路径
export HIVE_CONF_DIR=$HIVE_HOME/conf #注意这里需要根据情况修改这个$HIVE_HOME

修改hive-site.xml文件

cp hive-default.xml.template hive-site.xml
vi hive-site.xml

在文件内容界面下使用? for&#?找到相应行将其替换成for后,再将下列值替换成如下值。

<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://你安装了数据库的主机的ip:3306/hive?createDatabaseIfNotExist=true</value>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.mariadb.jdbc.Driver</value>
<name>javax.jdo.option.ConnectionUserName</name>
<value>mariadb用户名</value>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mariadb用户名密码</value>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</value>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/${hive.session.id}_resources</value>
<name>hive.querylog.location</name>
<value>/tmp/hive</value>
<name>hive.server2.logging.operation.log.location</name>
<value>/tmp/hive/operation_logs</value>

下载JDBC驱动,下载地址:https://downloads.mariadb.com/Connectors/java/,本次实验选择mariadb-java-client-2.3.0.jar,将该jar包放入$HIVE_HOME/lib目录下。

在hdfs中创建HIVE数据存放目录

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

至此,hive环境已经部署成功了。下面开始验证HIive。

初始化Hive

schematool -dbType mysql -initSchema

输入hive,启动hive,若启动成功则如下图所示:

5、spark编译安装

 

由于spark官网提供的预编译的二进制安装包不支持hive,因此如果需要支持hive的spark,需要自己手动编译。spark官方规定,若要编译spark3源码,则需要maven3.3.9版本以上,本实验中使用的是maven3.6.3,maven安装教程请自行google(比较简单)。

首先,从官网下载源码。

解压缩源码,解压缩后,cd到spark源码所在目录,运行如下代码

mvn -Pyarn -Phadoop-3.2 -Dhadoop.version=3.2.2 -Phive -Phive-thriftserver -DskipTests clean package

hadoop版本要和自己已安装好的hadoop版本相对应。命令表示生成的spark支持hadoop、hive、yarn,整个上面过程大约耗时半小时(可以利用这段时间名正言顺的魔摸鱼了),如果出现下载卡顿的情况,建议将maven的下载源改成华为源,这速度嚓嚓嚓的就提升上去了。

maven编译成功后,如果想要官网提供的那种二进制压缩包,则还需要输入以下命令

./dev/make-distribution.sh --name sparkwithhive --tgz -Pyarn -Phadoop-3.2 -Dhadoop.version=3.2.2 -Phive -Phive-thriftserver -DskipTests

整个过程耗时差不多也半小时,这时候你会发现在spark源码目录下会出现一个压缩包,这个就是编译好的支持hive的压缩包。

好了,下面开始安装spark了

解压缩,配置路径

tar -zxvf spark安装包 -C 解压路径

vi ~/.bashrc

export SPARK_HOME=解压路径
export PATH=$SPARK_HOME/bin:$PATH

source ~/.bashrc

配置spark-env.sh

位置在:$SPARK_HOME/conf/spark-env.sh.template

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

在spark-env.sh中输入如下内容

export JAVA_HOME=java安装路径
export SCALA_HOME=scala安装路径
export SPARK_HOME=spark安装路径

#单机版配置为本机ip
export SPARK_MASTER_IP=127.0.0.1
export SPARK_EXECUTOR_MEMORY=1G
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

配置slaves

位置在:$SPARK_HOME/conf/slaves.template

cp slaves.template slaves

在slaves文件最后加上localhost

至此,spark已经安装好啦。

cd到$SPARK_HOME/bin下启动spark-sql和spark-shell。

spark连接hive:

(1)将hive安装目录下的core-site.xml拷贝到spark的conf目录下。

(2)将配置hive时使用的mariadb-java-client-2.3.0.jar包拷贝到spark的jars目录下。

测试连接hive是否成功,启动spark-shell,输入import org.apache.spark.sql.hive.HiveContext,没报错,则说明spark可连接到hive。spark-sql同样也可以连接hive。

plus:在上述所有的安装部署过程中,尤其是在hive和spark启动时,可能会报methodnotFound的错误,一个原因是hive和spark中存在一个名叫guava的jar包和hadoop的guava jar包版本不一致,只需将hive(spark)或hadoop的guava jar包改成版本更高的即可,即使得jar包版本一致。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值