实验环境:VMWare Ubuntu16.4 JDK1.8 hadoop3.1.3 spark2.4
所需传输软件以及压缩包的百度网盘链接:
filezilla链接:
https://pan.baidu.com/s/1DECSFz92vcpPhjkIubQ29Q
提取码:w1ld

spark2.4链接:https://pan.baidu.com/s/1S_0NsNaaXft9_N9lzEZKmA
提取码:ogp5

jdk1.8链接:https://pan.baidu.com/s/1nRugPdHAuOvJDQp4dQBxuQ
提取码:1pdz

hadoop3.1.3链接:https://pan.baidu.com/s/1rrZ6U2jsDlWTTB4MFBIMHw
提取码:wdmx

1.环境配置

Hadoop安装与安装前的环境配置流程

1•如果你安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么需要增加一个名为 hadoop 的用户。
在下载好的ubuntu中需要创建hadoop用户,并为其设置密码以及所需权限,为后续的实验方便:

sudo useradd -m hadoop -s /bin/bash #创建新用户
sudo passwd hadoop  #设置密码
sudo adduser hadoop sudo  #增加权限

在创建成功后注销现在的环境(Ubuntu界面的右上角小虫子一样的图标里的注销)

然后再次进入虚拟机,选择使用创建的hadoop用户登录,开始实验。

2•在安装hadoop过程中会下载一些软件,用到apt安装,所以为了安装软件顺利,在此之前需要先对apt进行更新。

sudo apt-get update 

3•在环境配置中,经常需要对配置文件进行更改,这里就用到vim来编辑

sudo apt-get install vim

4•SSH是建立在应用层和传输层基础上的安全协议,它是目前比较可靠专门为远程登录会话提供的安全性协议,SSH由客户端和服务端组成。
在hadoop的集群或者单点模式中都需要用到SSH进行远程登录,而ubuntu上已经默认安装了SSH client,所以这里还需要安装SSH server

sudo apt-get install openssh-server

5•安装完SSH server之后,就可以使用local host进行登录

ssh localhost

但是每一次的登录都需要手动输入hadoop的密码,为了避免这样的麻烦就需要设置一下SSH的免密登陆。利用 ssh-keygen 生成密钥,并将密钥加入到授权中进行设置。

exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,先执行一次ssh localhost
ssh-keygen -t rsa              # 这里会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

以上执行完之后,在进行ssh localhost登录时就可以不需要密码直接登录进去了。

6•hadoop3.3版本需要在JDK1.8及以上版本,所以需要先进行java环境的安装。
在Windows系统中下载好的jdk压缩包通过filezilla传到Ubuntu的”hadoop/Downloads/”之下,然后在Ubuntu系统中进行解压,将解压之后的文件放在”/usr/lib/jvm”下。

(这里有的虚拟机是可以直接将文件从win上拖动到Ubuntu中的,不需要进行文件传输,可以先试试直接拖进去,如若不行就使用filezilla传输)

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads  #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u162-linux-x64.tar.gz上传到该目录下(拖动的也可以,使用没有影响)
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

7•解压jdk完成后,使用vim编辑器打开hadoop用户的环境变量配置文件,在文件开始位置添加如下几行配置语句,之后保存退出。

cd ~
vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

然后执行” source ~/.bashrc”命令使其生效。

再用”java -version”查看是否安装成功,若如下的出现有关java的版本信息则成功。
出现如下信息就是安装成功了。

hadoop@ubuntu:~$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

8•java环境配置完成后,开始安装hadoop
同样的,在Windows系统上下载好hadop3.3压缩包之后,使用文件传输软件将压缩包放在hadoop的 ”/hadoop/Downloads” 目录下,在将其解压到”/usr/local”目录下。

由于该软件名称过长后续使用不易操作,所以后面使用mv命令改变文件名。
之后对hadoop文件进行权限修改,方便后续实验操作。

sudo tar -zxf ~/Downloads/hadoop-3.1.3.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

最后使用”./bin/hadoop version”查看是否安装成功。

cd /usr/local/hadoop
./bin/hadoop version

在这里插入图片描述

2. hadoop伪分布式配置

1•如上操作已经完成了对hadoop安装,接下来可以完成对hadoop的伪分布式配置了。

Hadoop可以在单点模式上以伪分布式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

在这里,只需要对hadoop中的两个配置文件进行修改就可以了。
(1) 第一个是对core-site.xml配置文件进行修改。
•如下图中,可以使用gedit或者vim打开文件,这里gedit的使用比vim方便一些。

•在配置文件中加入如下红框的代码,并进行保存。

(ps:这里需要说明一下。原本的配置文件中都是有数据的,
/usr/local/hadoop/etc/hadoop/这个路径有时直接输入进去打开的文件是空的,这时是路径的错误,需要一级级的打开,前提是hadoop的具体安装路径跟这个是一样的,如果不一样,你需要找你的hadoop所在路径。
还有需要注意的,如果vim进去之后编辑不了文件or保存不了就请返回,在命令前加sudo)

 cd /usr/local/hadoop/etc/hadoop/
 gedit ./etc/hadoop/core-site.xml

如下截图,打开之后原本的文件是不包括红色框框的,红框内的内容是需要添加上去的
在这里插入图片描述
插入代码如下:

<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>

(2) 第二个是对hdfs-site.xml文件的配置,打开方法如上使用的getdit编辑器。
gedit ./etc/hadoop/hdfs-site.xml在这里插入图片描述

<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>

•在配置完文件之后,需要对NameNode进行格式化。
(ps又来啦:有一个地方需要注意,格式化命令执行的过程中会有提示,这时输入Y,尽量不用小写y,这里的小小区别有时候会在下面的过程中出错。有些是没影响的,不过还是谨慎嘛。)

cd /usr/local/hadoop
./bin/hdfs namenode -format

观察格式化的结果,当看到successful以及txid为0即为成功,否则为失败。
当这里出现失败时,只需要返回java环境配置添加路径语句时的文档,将“export JAVA_HOME=${JAVA_HOME}”修改成JAVA安装路径的具体地址即可。

在这里插入图片描述

•至此,可以启动NameNode 和 DataNode 守护进程了。
启动进程命令完成后,输入jps可以查看具体的进程节点。
在这里插入图片描述

•最后启动成功之后,既可以登录https://localhost:9870进程web界面的信息查看。

在这里插入图片描述
这里还可能出现一个错误,就是启动节点之后发现datanode并没有被启动,这里有一个解决办法(注意,这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做):

# 针对 DataNode 没法启动的解决方法
cd /usr/local/hadoop
./sbin/stop-dfs.sh   # 关闭
rm -r ./tmp     # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据
./bin/hdfs namenode -format   # 重新格式化 NameNode
./sbin/start-dfs.sh  # 重启

重启之后再次jps就可以看到都启动啦~

3. Spark安装流程

1•以上完成了java环境配置以及hadoop的安装之后,接下来就可以安装spark了。
首先也是在Windows系统之上下载spark压缩包,之后使用文件传输上传到hadoop目录之下。然后将压缩包解压到”/usr/local”之下。
由于名称过长,所以再次使用mv修改文件名称。
解压之后在目录下进行查看。

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

2•接着为spark赋予所需权限

sudo chown -R hadoop:hadoop ./spark          
# 此处的 hadoop 为你的用户名,如果你一开始起的用户名不是hadoop,是hadoop1,或者其他的什么,那么hadoop:hadoop这里就是hadoop1:hadoop1,你起得:你起得

3•spark安装完成之后,还需要修改其中的配置文件spark-env.sh
在文件开始位置添加语句,配置完成后就可以直接使用,不需要像Hadoop运行启动命令再使用。

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

添加语句如下:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

4•最后我们可以使用自带的实例用来查看spark是否可以使用。运行命令后输出信息过多,所以仅筛选出关键信息进行查看。

cd /usr/local/spark
bin/run-example SparkPi 2>&1 | grep "Pi is"

当出现如下的π小数时即说明安装成功。

在这里插入图片描述

至此spark安装也完成了。这时可以直接输入scalar进入交互式的编程终端。
在这里插入图片描述
以下是我在实验时遇到问题的总结以及解决办法,更多的希望各位大佬不吝指教。
在这里插入图片描述

(以上实验过程参考厦门大学林老师的实验步骤,对更多安装实验感兴趣的同学可以关注一下厦门大学林子雨大数据实验室哦)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐