采取的是两台阿里云服务器搭建集群
1、首先进行的是ssh免密码登录的操作
具体操作在上篇笔记中找 里面有
2、配置Java环境
具体操作上篇笔记中详细记录
3、下载Hadoop2.7.2,并进行安装配置环境
我是创建文件放在opt/soft文件夹下面,直接打开该文件夹,进行下载
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz
①解压
tar -zxvf hadoop-2.7.6.tar.gz
在etc/hadoop/hadoop-env.sh
中配置JDK
的信息 先查看本机的jdk目录地址在哪里
vi etc/hadoop/hadoop-env.sh
将
export JAVA_HOME=${JAVA_HOME}
改为
export JAVA_HOME=/opt/soft/jdk1.8.0_172
为了方便我们以后开机之后可以立刻使用到Hadoop的bin目录下的相关命令,
把hadoop
文件夹下的bin
和sbin
目录配置到/etc/profile
文件中
export PATH=$PATH:/opt/soft/hadoop-2.7.6/bin:/opt/soft/hadoop-2.7.6/sbin
配置Hadoop分布式集群
修改主机名 之前笔记中有
在==两台==机子的总的hadoop-2.7.6文件夹下建立如下四个文件夹
- 目录/tmp,用来存储临时生成的文件
- 目录/hdfs,用来存储集群数据
- 目录hdfs/data,用来存储真正的数据
- 目录hdfs/name,用来存储文件系统元数据
mkdir tmp hdfs hdfs/data hdfs/name
配置hadoop文件
在此先修改SparkMaster的配置文件,然后修改完毕后通过
rsync
命令复制到其他节点电脑上。
修改core-site.xml
vi etc/hadoop/core-site.xml
具体修改如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://spark: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文件中的原因。
修改marpred-site.xml.template
具体修改如下
首先我们需要的是将marpred-site.xml复制一份:
cp mapred-site.xml.template marpred-site.xml marpred-site.xml.template
此处修改的是
marpred-site.xml
,不是marpred-site.xml.template
。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>spark:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>spark:19888</value>
</property>
</configuration>
修改hdfs-site.xml
具体修改如下(我们需要把 replication的value改为1 )
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/soft/hadoop-2.7.6/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/soft/hadoop-2.7.6/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>spark:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
PS:变量dfs.replication指定了每个HDFS数据块的复制次数,即HDFS存储文件的副本个数.我的实验环境只有一台Master和一台Worker(DataNode),所以修改为2。
配置yarn-site.xml
具体配置如下:
vim yarn-site.xml
<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>spark:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>spark:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>spark:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>spark:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>spark:8088</value>
</property>
</configuration>
修改slaves的内容
将localhost
修改成为SparkWorker1
、SparkWorker2
将SparkMaster
节点的`hadoop-2.7.2/etc/下面的文件通过以下方式放去其他节点
rsync -av /opt/soft/hadoop-2.7.6/etc/ zhangsf:/opt/soft/hadoop-2.7.6/etc/
可能会出现 rsync: command not found报错原因以及解决办法 上篇笔记
完成之后可以查看SparkWorker1
下面的文件是否变了
启动hadoop分布式集群
在SparkMaster
节点格式化集群的文件系统
输入
hadoop namenode -format
格式化节点成功的标识:
![](https://i-blog.csdnimg.cn/blog_migrate/70613ddcaf7b340a5250294c39d8513b.png)
启动Hadoop集群
start-all.sh
会爆出错误:
Caused by: java.net.BindException: Cannot assign requested
成功解决之后查看各个节点的进程信息
主节点:
从节点
查看各节点的进程信息
可以看到 在主master
在worker节点的
此时分布式的hadoop集群已经搭好了
还需要的就是在阿里云控制台配置规则中添加规则
验证阶段 在浏览器输入
主节点ip:50070
看到以下界面代表Hadoop集群已经开启了
主节点ip:8088
![](https://i-blog.csdnimg.cn/blog_migrate/04d9eae98842a60b0de9a2e4f5f0d5a3.png)
ok!!!