前言
本文是《Spark集群配置》的第二篇。主要讲解安装Spark
前安装Hadoop
的步骤。其他的几篇传送门:
. Spark集群配置(1):基础配置
. Spark集群配置(3):安装Spark
. Spark集群配置(4):其他填坑杂项
本文要求读者有一定的Linux
命令基础,并且在多台机器上完成了第一篇中的基础配置。内容主要参考HDFS
的官方文档。
下面我们开始正文。
为什么要安装Hadoop
首先需要搞清楚的一个问题是,我们为什么要安装Hadoop
?
我的答案是,我们要使用Hadoop
的HDFS
分布式文件存储系统,我们要使用Yarn
资源管理系统来为我们的分布式计算服务。
但不使用它的MapReduce
计算框架,因为我们要使用Spark
的计算框架。
下载Hadoop
到官网hadoop.apache.org下载一个版本的Hadoop
。在下载页面中每个版本都有source
和binary
两种版本,其中source
是源代码,下载后需要自己编译,binary
是编译好的版本,可以直接安装。
但是这里有一个坑:官网编译好的版本,大多都是基于32位系统编译的。虽然大多数功能都可以64位上运行,但有一些功能不能使用,会报错,而且每次运行的时候会有个讨厌的Warn。因此推荐自己下载源码编译。在Linux
上编译一般都很费事。如果读者想使用64位版本但又不想自己编译,则可以选择下载hadoop 2.7.3
版本安装。在本系列的《Spark集群配置(四):其他填坑杂项》中,我给出了该版本的编译结果。你可以直接下载,按照文中的方法替换相应文件即可。
安装Hadoop
假设你下载好了Hadoop编译版本hadoop-2.7.3.tar.gz
,在所有机器上执行以下命令:
配置环境变量
将以下内容添加到etc/profile
中:
保存修改后应使用source /etc/profile
刷新一下使其立即生效。
配置Hadoop
Hadoop的配置为文件位置在hadoop/ect/hadoop/
中。由于我们只是用分布式文件存储功能,所以这里我们需要配置以下几个文件。
如果在hadoop/ect/hadoop/
中没有找到相应的文件,请使用命令自己创建:
hadoop-env.sh
修改文件里的配置项目为以下内容,其他的内容不变:
core-site.xml
由于我们已经配置过hosts文件了,可以直接使用各个机器的别名。如果你没有配置过hosts,应该将下面的master替换成对应的IP。
将文件内替换为以下内容
yarn-site.xml
由于我们已经配置过hosts文件了,可以直接使用各个机器的别名。如果你没有配置过hosts,应该将下面的master替换成对应的IP。
将文件内替换为以下内容:
hdfs-site.xml
由于我们已经配置过hosts文件了,可以直接使用各个机器的别名。如果你没有配置过hosts,应该将下面的master替换成对应的IP。
将文件内替换为以下内容:
slaves
slaves文件主要用于指明哪些节点是从节点。
由于我们已经配置过hosts文件了,可以直接使用各个机器的别名。如果你没有配置过hosts,应该将下面的别名替换成对应的IP。
每个机器名(或IP)独立占一行。我这里将master也写在里面,表示master机器也作为一个节点来使用。
启动和关闭HDFS
配置完成之后,我们就可以使用HDFS了。
第一次使用HDFS,需要对其进行格式化以写入DFS文件系统。执行:
格式化完成后执行以下命令来启动HDFS和YARN:
如果一切正常不报错就说明启动完成。这个时候可以访问http://master:50070或者http://master_IP:50070
就可以查看Hadoop的运行状态。
如果要关闭HDFS要逆着上面的顺序执行以下命令:
HDFS的简单常用命令
HDFS的命令和Linux的文件操作命令十分相似,就连许多命令的参数用法都是一致的。
创建文件夹:
# 创建一个文件夹
$ hadoop fs -mkdir /new_dir
# 允许同时创建多个文件夹
$ hadoop fs -mkdir /new_dir1 new_dir2
# 创建一个多级深度的文件夹
$ hadoop fs -mkdir -p data/new_dir/new_deepper_dir
上传文件:
# 上传文件到指定文件夹
$ hadoop fs -put localfile /user/hadoop/hadoopdir
# 支持同时上传多个文件到指定文件夹
$ hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
查询文件:
$ hadoop fs -ls
下载文件:
# 将文件下载到本地,同时保留HDFS文件
$ hadoop fs -get /user/hadoop/file localfile
删除文件:
# 删除指定文件
$ hadoop fs -rm /data/filename
还有一些其他的文件操作命令请参考《Hadoop Shell命令》。
到此我们配置完了Hadoop的HDFS,如需继续进行,可以参见Spark集群配置(3):安装Spark