![80ee666fe92de6e76ef467a499bccbae.png](https://i-blog.csdnimg.cn/blog_migrate/b19b6597869a2ebc0f43828799da5bb8.png)
0x00 前言
本系列文章利用多台机器建立 HDFS 以及 Spark 服务。若你只需要使用 Spark,可以不必额外进行 Hadoop 的安装,但由于笔者有 HDFS + Spark 的需求,而且 HDFS 是在 Hadoop 里面,所以把 Hadoop 也一并装上。
本文所示范的例子使用的是 Hadoop2.7 + Spark2.4。
0x01 JAVA 版本
要配置 HDFS 或使用 Hadoop 的其他服务时我们首先要先注意 Java 的版本,因为笔者在跑 HiBench 的时候使用 Maven 编译发现编译错误,在查资料之后发现原来许多人使用 OpenJDK 都会发生不同的错误,而且推荐使用 Oracle JDK。为了减少你以后在 Hadoop 上会踩上的坑,还是建议先替换到 Oracle JDK。
然而,由于 Oracle Java 的 License 有所变更的缘故,故网上大部分有关于使用 PPA 下载并安装 Oracle Java 的方法都不能用。最新的方法是到 Oracle java 的官网上进行下载。
首先我们可以对本机的 JAVA 版本进行确认
$ java -version
若本机正在使用的是 OpenJDK 版本,显示的会是类似于
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b09)
OpenJDK 64-Bit Server VM (build 25.242-b09, mixed mode)
若本机正在使用的是 Oracle 版本,显示的会是类似于
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
若你原来的是 OpenJDK 版本以及没有安装 Oracle JAVA,可以在官网上下载 Oracle JAVA 8
![5e9cec233e9e9424f410ffe039335532.png](https://i-blog.csdnimg.cn/blog_migrate/86e014572dbb8288136aa9f6912af88d.jpeg)
找到这里之后根据机器的配置下载相对应的 Oracle JAVA,然后解压缩
$ tar -xzvf jdk-8u251-linux-x64.tar.gz jdk1.8.0_251/
并把他放到你常用的安装目录下
sudo mv jdk1.8.0_251/ /opt
然后把你的 JAVA 安装到可替换的目录当中
$ sudo update-alternatives --install "/usr/bin/java" "java" ""/opt/jdk1.8.0_251/bin/java" 100
然后把你预设使用的 JAVA 换成 Oracle JAVA
$ sudo update-alternatives --set java /opt/jdk1.8.0_251/bin/java
然后现在看看 JAVA 就可以看到替换之后的版本
$ java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
以及根据你的目录在 ~/.bashrc
中设置 $JAVA_HOME
,在随后的 Spark 及 Hadoop 会用到
export JAVA_HOME=/usr
这就完成了 JAVA 的替换。
0x02 Hadoop 安装
首先我们一样需要取得 Hadoop 和压解缩,
$ wget https://archive.apache.org/dist/hadoop/common/hadoop-
$ tar zxf hadoop-2.7.0.tar.gz
然后可以选择把 Hadoop 放到你常用的安装目录下,例如:
$ sudo mv hadoop-2.7.0 /usr/local/hadoop
若你希望能够更方便的使用 hadoop 的命令,可以选择把 Hadoop 的 bin/
加到本机的 $PATH
中,在例子中笔者把 Spark 以及 Hadoop 的 bin
目录都加入了 ~/.bashrc
上的$PATH
中
$ export PATH="/usr/local/spark/bin:/usr/local/hadoop/bin:$PATH"
$ source ~/.bashrc
然后输入 hadoop
和 hdfs
验证安装是否成功。
$ hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
CLASSNAME run the class named CLASSNAME
or
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jar <jar> run a jar file
note: please use "yarn jar" to launch
YARN applications, not this command.
checknative [-a|-h] check native hadoop and compression libraries availability
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath prints the class path needed to get the
credential interact with credential providers
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
trace view and modify Hadoop tracing settings
Most commands print help when invoked w/o parameters.
$ hdfs
Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND
where COMMAND is one of:
dfs run a filesystem command on the file systems supported in Hadoop.
classpath prints the classpath
namenode -format format the DFS filesystem
secondarynamenode run the DFS secondary namenode
namenode run the DFS namenode
journalnode run the DFS journalnode
zkfc run the ZK Failover Controller daemon
datanode run a DFS datanode
dfsadmin run a DFS admin client
haadmin run a DFS HA admin client
fsck run a DFS filesystem checking utility
balancer run a cluster balancing utility
jmxget get JMX exported values from NameNode or DataNode.
mover run a utility to move block replicas across
storage types
oiv apply the offline fsimage viewer to an fsimage
oiv_legacy apply the offline fsimage viewer to an legacy fsimage
oev apply the offline edits viewer to an edits file
fetchdt fetch a delegation token from the NameNode
getconf get config values from configuration
groups get the groups which users belong to
snapshotDiff diff two snapshots of a directory or diff the
current directory contents with a snapshot
lsSnapshottableDir list all snapshottable dirs owned by the current user
Use -help to see options
portmap run a portmap service
nfs3 run an NFS version 3 gateway
cacheadmin configure the HDFS cache
crypto configure HDFS encryption zones
storagepolicies list/get/set block storage policies
version print the version
Most commands print help when invoked w/o parameters.
若出现以上的 help
目录,代表安装已完成。
0x03 Spark 安装
Spark 的下载及安装也和 Hadoop 无异,我们需要先下载 Scala
$ sudo apt install scala -y
然后利用 wget
进行下载及解压缩
$ wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
$ tar xvf spark-*
放到你常用的下载目录
$ sudo mv spark-2.4.0-bin-hadoop2.7 /usr/local/
$ cd /usr/local/
若你有多个同时存在于不同版本 Spark 的需要,你可以用下方式建立链结,便于替换
sudo ln -s spark-2.4.0-bin-hadoop2.7/ spark
把 $SPARK_HOME
加到 ~/.bashrc
中,同时亦可以和 Hadoop 一样把 bin
目录加到$PATH
中
export SPARK_HOME=/usr/local/spark
export PATH="/usr/local/spark/bin:/usr/local/hadoop/bin:$PATH"
$ source ~/.bashrc
然后就可以验证 Spark 的使用,若出现以下结果就是正常安装了
$ spark-shell
2020-05-18 17:04:48 WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://worker1:4040
Spark context available as 'sc' (master = local[*], app id = local-1589792692425).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_ / _ / _ `/ __/ '_/
/___/ .__/_,_/_/ /_/_ version 2.4.0
/_/
Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_251)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
0x04 总结
在本文(一)中介绍了 JAVA 版本选用以及 Hadoop 和 Spark 的安装,在接下来的篇幅(二)中会对如何在多节点机器上进行 HDFS 和 Spark 配置,以及简单范例的运行进行介绍。
本文首發於 laochanlam 个人博客,转载请注明出处。
个人主页 - laochanlamblog.laochanlam.com