因为比赛的限制是使用 Hadoop2.7.2,估在此文章下面的也是使用 Hadoop2.7.2, 具体下载地址为 Hadoop2.7.2
目前在我的实验室上有三台 Linux 主机,因为需要参加一个关于 spark 数据分析的比赛,所以眼见那几台服务器没有人用,我们团队就拿来配置成集群。具体打算配置如下的集群
主机名 | IP 地址(内网) |
---|---|
SparkMaster | 10.21.32.106 |
SparkWorker1 | 10.21.32.109 |
SparkWorker2 | 10.21.32.112 |
具体操作在上一篇学习日记当中已经写到了,在此不再详细说。
因为我那三台电脑也是配置好了 JDK 了,所以在此也不详细说。
配置好 Java 的机子可以使用
- java - version
来查看 Java 的版本
因为我最后的文件是放在
下面的,所以我也直接打开
- /usr/local
文件夹下。直接
- /usr/local
- wget https: //mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
解压
- tar - zxvf hadoop - 2.7.2.tar.gz
删除
- rm - rf hadoop - 2.7.2.tar.gz
解压删除之后打开 hadoop-2.7.2 文件夹,在
中配置
- etc/hadoop/hadoop-env.sh
的信息 先查看本机的 jdk 目录地址在哪里
- JDK
- echo $JAVA_HOME
- vi etc / hadoop / hadoop - env.sh
将
- export JAVA_HOME = $ {
- JAVA_HOME
- }
改为
- export JAVA_HOME = /usr/java / jdk1.8.0_131
为了方便我们以后开机之后可以立刻使用到 Hadoop 的 bin 目录下的相关命令,可以把
文件夹下的
- hadoop
和
- bin
目录配置到
- sbin
文件中。
- /etc/profile
- vi / etc / profile
添加
- export PATH = $PATH: /usr/local / hadoop - 2.7.2 / bin: /usr/local / hadoop - 2.7.7 / sbin
按一下
, 按着
- esc
+ 两次
- shift
键保存
- z
使用
- source / etc / profile
使得命令配置信息生效, 是否生效可以通过
- hadoop version
查看
考虑是为了建立
集群,所以主机命名为
- spark
- SparkMaster
- SparkWorker1
- SparkWorker2
- vi / etc / hostname
修改里面的名字为
, 按一下
- SprakMaster
, 按着
- esc
+ 两次
- shift
键保存。
- z
- vi / etc / hosts
配置主机名和 IP 地址的对应关系。
Ps: 其他两台 slave 的主机也修改对应的 SparkWorker1 SparkWorker2,如果修改完主机名字之后户籍的名字没有生效,那么重启系统便可以。三台机子的 hostname 与 hosts 均要修改
- mkdir tmp hdfs hdfs / data hdfs / name
在此先修改 SparkMaster 的配置文件,然后修改完毕后通过
命令复制到其他节点电脑上。
- rsync
- vi / usr / local / hadoop - 2.7.2 / etc / hadoop / core - site.xml
具体修改如下:
- <configuration>
- <property>
- <name>
- fs.defaultFS
- </name>
- <value>
- hdfs://SparkMaster:9000
- </value>
- </property>
- <property>
- <name>
- hadoop.tmp.dir
- </name>
- <value>
- file:/usr/local/hadoop-2.7.2/tmp
- </value>
- </property>
- <property>
- <name>
- io.file.buffer.size
- </name>
- <value>
- 131072
- </value>
- </property>
- </configuration>
变量 fs.defaultFS 保存了 NameNode 的位置,HDFS 和 MapReduce 组件都需要它。这就是它出现在 core-site.xml 文件中而不是 hdfs-site.xml 文件中的原因。
具体修改如下
- <configuration>
- <property>
- <name>
- mapreduce.framework.name
- </name>
- <value>
- yarn
- </value>
- </property>
- <property>
- <name>
- mapreduce.jobhistory.address
- </name>
- <value>
- SparkMaster:10020
- </value>
- </property>
- <property>
- <name>
- mapreduce.jobhistory.webapp.address
- </name>
- <value>
- SparkMaster:19888
- </value>
- </property>
- </configuration>
具体修改如下
- <configuration>
- <property>
- <name>
- dfs.namenode.name.dir
- </name>
- <value>
- file:/usr/local/hadoop-2.7.2/hdfs/name
- </value>
- </property>
- <property>
- <name>
- dfs.datanode.data.dir
- </name>
- <value>
- file:/usr/local/hadoop-2.7.2/hdfs/data
- </value>
- </property>
- <property>
- <name>
- dfs.replication
- </name>
- <value>
- 2
- </value>
- </property>
- <property>
- <name>
- dfs.namenode.secondary.http-address
- </name>
- <value>
- SparkMaster:9001
- </value>
- </property>
- <property>
- <name>
- dfs.webhdfs.enabled
- </name>
- <value>
- true
- </value>
- </property>
- </configuration>
PS:变量 dfs.replication 指定了每个 HDFS 数据块的复制次数,即 HDFS 存储文件的副本个数. 我的实验环境只有一台 Master 和两台 Worker(DataNode),所以修改为 2。
具体配置如下:
- <configuration>
- <property>
- <name>
- yarn.nodemanager.aux-services
- </name>
- <value>
- mapreduce_shuffle
- </value>
- </property>
- <property>
- <name>
- yarn.nodemanager.aux-services.mapreduce.shuffle.class
- </name>
- <value>
- org.apache.hadoop.mapred.ShuffleHandler
- </value>
- </property>
- <property>
- <name>
- yarn.resourcemanager.address
- </name>
- <value>
- SparkMaster:8032
- </value>
- </property>
- <property>
- <name>
- yarn.resourcemanager.scheduler.address
- </name>
- <value>
- SparkMaster:8030
- </value>
- </property>
- <property>
- <name>
- yarn.resourcemanager.resource-tracker.address
- </name>
- <value>
- SparkMaster:8031
- </value>
- </property>
- <property>
- <name>
- yarn.resourcemanager.admin.address
- </name>
- <value>
- SparkMaster:8033
- </value>
- </property>
- <property>
- <name>
- yarn.resourcemanager.webapp.address
- </name>
- <value>
- SparkMaster:8088
- </value>
- </property>
- </configuration>
将
修改成为
- localhost
、
- SparkWorker1
- SparkWorker2
节点的 `hadoop-2.7.2/etc / 下面的文件通过以下方式放去其他节点
- SparkMaster
- rsync - av / usr / local / hadoop - 2.7.2 / etc / SparkWorker1: /usr/local / hadoop - 2.7.2 / etc /
- rsync - av / usr / local / hadoop - 2.7.2 / etc / SparkWorker1: /usr/local / hadoop - 2.7.2 / etc /
完成之后可以查看
、
- SparkWorker1
下面的文件是否变了
- SparkWorker2
节点格式化集群的文件系统
- SparkMaster
输入
- hadoop namenode - format
- start - all.sh
使用
- jps
查看各节点的进程信息
可以看到
此时分布式的 hadoop 集群已经搭好了
在浏览器输入
- SparkMaster_IP: 50070
- SparkMaster_IP: 8088
看到以下界面代表 Hadoop 集群已经开启了
到此 Hadoop 的分布式集群就搭好了。这个 Spark 运行的基础。
参见:CentOS 6.7 安装 Hadoop 2.7.2
++ 王家林 / 王雁军 / 王家虎的《Spark 核心源码分析与开发实战》++
文章出自 kwongtai'blog
来源: http://www.cnblogs.com/kwongtai/p/7225858.html