hadoop(二)搭建伪分布式集群
前言
前面只是大概介绍了一下Hadoop,现在就开始搭建集群了。我们下尝试一下搭建一个最简单的集群。之后为什么要这样搭建会慢慢的分享,先要看一下效果吧!
一、Hadoop的三种运行模式(启动模式)
1.1、单机模式(独立模式)(Local或Standalone Mode)
-默认情况下,Hadoop即处于该模式,用于开发和调式。
-不对配置文件进行修改。
-使用本地文件系统,而不是分布式文件系统。
-Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
-用于对MapReduce程序的逻辑进行调试,确保程序的正确。
1.2、伪分布式模式(Pseudo-Distrubuted Mode)
-Hadoop的守护进程运行在本机机器,模拟一个小规模的集群
-在一台主机模拟多主机。
-Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。
-在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,
以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
-修改3个配置文件:core-site.xml(Hadoop集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)
-格式化文件系统
1.3、全分布式集群模式(Full-Distributed Mode)
-Hadoop的守护进程运行在一个集群上
-Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。
-在所有的主机上安装JDK和Hadoop,组成相互连通的网络。
-在主机间设置SSH免密码登录,把各从节点生成的公钥添加到主节点的信任列表。
-修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,设置文件的副本等参数
-格式化文件系统
二、搭建伪分布式集群的前提条件
环境:在ubuntu17.04
jdk1.8.0_131
hadoop 2.8.1
2.1、能够正常运行的Ubuntu操作系统
在Ubuntu下,软件安装到/opt下,当前正在使用的用户,对于opt目录需要有读写权限:
1)将opt的权限给为777(漏洞文件),不推荐在生产环境中使用。但是可以在学习和调试环境中使用。
2)sudo
在启动Hadoop的各个守护进程的时候,需要使用sudo。
在管理Hadoop的时候,实际上由不同的用户启动不同集群的守护进程。
统一使用当前的用户管理所有集群。
3)该目录的所有者设置为当前用户
2.2、安装JDK,并配置环境变量
1)将jdk安装包放在家目录下
2)解压到opt目录下
sudo tar zxvf jdk-8u131-linux-x64.tar.gz -C /opt
此时在/opt目录下:会有一个jdk1.8.0_131
3)创建软链接
sudo ln -snf /opt/jdk1.8.0_131 /opt/jdk
注意:创建软连接的目的是为了,我们在做项目的时候,可能会用到不同的jdk版本,这是要换软件的话,只需要修改软链接就可以了。而不用修改配置文件。
4)配置环境变量
局部环境变量:~/.bashrc
全局环境变量:/etc/profile
export JAVA_HOME=/opt/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
source 相关文件(更新配置文件)
5)查看是否安装成功
java、javac、java -version
三、搭建伪分布式集群
3.1、安装hadoop
1)解压hadoop安装包到opt目录下
sudo tar zxvf hadoop-2.8.1.tar.gz -C /opt
2)创建软链接
ln -snf /opt/hadoop-2.8.1 /opt/hadoop
3)配置环境变量
在/etc/profile文件中加入以下内容:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
4)使用hadoop version命令测试是否配置成功
3.2、配置hadoop
配置文件存放在/opt/hadoop/etc/hadoop中有n多个文件,暂时我们只需要修改的只有5个
1)hadoop-env.sh
大约在25行左右
export JAVA_HOME=${JAVA_HOME}改成export JAVA_HOME=/opt/jdk
注意:在配置文件中有提示我们怎么设置,我们一般不删除,二回选择注释它的提示。
2)core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://1.0.0.5:9000</value>
</property>
</configuration>
分析:1.0.0.5是你主节点所在主机的ip,而9000为端口
3)hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/nn</value>
</property>
<property>
<name>dfs.namenode.ch
eckpoint.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/dn</value>
</property>
</configuration>
4)mapred-site.xml
在hadoop的相关目录中没有此文件,但是有一个mapred-site.xml.template文件,将该文件复制一份为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5)yarn-site.xml
<configuration>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>1.0.0.5</value>
</property>
<!-- 指定reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:///data/hadoop/yarn/nm</value>
</property>
</configuration>
7)创建相关目录
sudo mkdir -p /data/hadoop/hdfs/nn
sudo mkdir -p /data/hadoop/hdfs/dn
sudo mkdir -p /data/hadoop/hdfs/snn
sudo mkdir -p /data/hadoop/yarn/nm
注意:
如果使用sudo启动hadoop的相关进程,这几目录的权限可以不用管。
如果是使用当前的用户启动相关进程,对于opt目录,当前用户得有读写权限,对于/data目录也需要读写权限。
遇到问题:
笔者就是在这个目录权限的问题吃el很大得亏。首先为了不使用sudo我将/data目录的权限修改为777,然后进行
HDFS集群格式化的时候,出现:
这时我在想为什么呢?原来我只是给data目录设置了读写权限,但是没有给它的子目录设置读写权限。所以:
chmod -R /data 递归设置权限
8)对HDFS集群进行格式化,HDFS集群是用来存储数据的。
hdfs namenode -format
3.3、启动集群
1)启动HDFS集群
hadoop-daemon.sh start namenode 启动主节点
hadoop-daemon.sh start datanode 启动从节点
2)启动YARN集群
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
3)启动作业历史服务器
mr-jobhistory-daemon.sh start historyserver
4)jps命令查看是否启动成功
5)HDFS和YARN集群都有相对应的WEB监控页面
HDFS:http://ip:50070
YARN:http://ip:8088
6)HDFS集群的简单操作命令
hdfs dfs -ls /
hdfs dfs -mkdir -p /user/zyh
7) YARN集群的操作----提交任务/作业
计算PI值的作业:
yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 4 100
四、一个问题
我之前没有注意发现我的yarn的从节点没有启动起来,在执行计算PI值的时候没有成功才看到:
查看日志发现是配置文件:
在hdfs-site-web.xml中:
查看http://1.0.0.5:50070可以查看从节点是否启动:
在执行上面使用yarn集群来计算pi值得命令:
查看http://1.0.0.5:8088可以看出计算pi值得任务正在执行:
最后成功:
这里就截图了,电脑卡住了,上图中在web页面可以查看到任务执行成功,终端中会显示执行结果!
喜欢就点“推荐”哦!
hadoop(二)搭建伪分布式集群的更多相关文章
- hadoop搭建伪分布式集群(centos7+hadoop-3.1.0/2.7.7)
目录: Hadoop三种安装模式 搭建伪分布式集群准备条件 第一部分 安装前部署 1.查看虚拟机版本2.查看IP地址3.修改主机名为hadoop4.修改 /etc/hosts5.关闭防火墙6.关闭SE ...
- 超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群
超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群 ps:本文的步骤已自实现过一遍,在正文部分避开了旧版教程在新版使用导致出错的内容,因此版本一致的情况下照搬执行基本不会有大错误. ...
- centos7搭建伪分布式集群
centos7搭建伪分布式集群 需要 centos7虚拟机一台: jdk-linux安装包一个 hadoop-2.x安装包1个(推荐2.7.x) 一.设置虚拟机网络为静态IP(最好设成静态,为之后编程 ...
- Hadoop伪分布式集群
一.HDFS伪分布式环境搭建 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时, ...
- Redis集群搭建,伪分布式集群,即一台服务器6个redis节点
Redis集群搭建,伪分布式集群,即一台服务器6个redis节点 一.Redis Cluster(Redis集群)简介 集群搭建需要的环境 二.搭建集群 2.1Redis的安装 2.2搭建6台redi ...
- 基于Hadoop伪分布式集群搭建Spark
一.前置安装 1)JDK 2)Hadoop伪分布式集群 二.Scala安装 1)解压Scala安装包 2)环境变量 SCALA_HOME = C:\ProgramData\scala-2.10.6 P ...
- hadoop学习笔记(五)hadoop伪分布式集群的搭建
本文原创,如需转载,请注明作者和原文链接 1.集群搭建的前期准备 见 搭建分布式hadoop环境的前期准备---需要检查的几个点 2.解压tar.gz包 [root@node01 ~]# ...
- Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建
hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ...
- Hadoop伪分布式集群环境搭建
本教程讲述在单机环境下搭建Hadoop伪分布式集群环境,帮助初学者方便学习Hadoop相关知识. 首先安装Hadoop之前需要准备安装环境. 安装Centos6.5(64位).(操作系统再次不做过多描 ...
随机推荐
- js封装成插件
由于项目原因,工作一年多还没用js写过插件,项目太成熟,平时基本都是在使用已经封装好的功能插件.感觉自己好low......这两天想自己抽空写一个canvas画统计图与折现图的插件,所以就去网上学习了 ...
- 通过业务系统的重构实践DDD
最近新接了一个业务系统——社区服务系统,为了快速熟悉和梳理老系统的业务逻辑和代码,同时对老系统代码做一些优化,于是打算花上一个月时间不间断地对老系统服务进行重构.同时,考虑到社区业务的复杂性,想起了之 ...
- Topshelf便捷创建Windows服务
结合Quartz.net学习,前提已经创建了一个定时任务,可见 <定时调度框架:Quartz.net> (基于配置文件形式) 首先引用Topshelf.dll 自定义服务TestServi ...
- WCF(三)分布式事务
最近在学WCF,所以有两个设想疑问(菜鸟多疑问): 如果有WCF服务A,WCF服务B,客户端调用WCF服务A插入一条数据,然后再调用服务B也插入一条数据,然而服务B出错了进行了回滚,服务A能不能也进行 ...
- mpls vpn剩余笔记
将IP地址映射为简单的具有固定长度的标签 用于快速数据包交换 20 3 1 8 在整个转发过程中,交换节点仅根据标记进行转发 标签交换路径(LSP) 多协议标签交换MPLS最初是为了提高转发速度而提出 ...
- JS内置对象-自定义对象
1.基本概念: ①对象:对象是拥有一系列无序属性和方法的集合. ②键值对:对象中的数据是以键值对的形式存在,对象的每个属性和方法,都对应值一个键名,以键取值. ③属性:描述对象特征的一系列变量称为属性 ...
- 201521123042 《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 Q1.代码阅读:Child压缩包内源代码 1.1 com. ...
- 201521123042《Java程序》第二周总结
1. 本周学习总结 了解枚举类型的使用方法. 学会使用ArrayList替换数组,并且学会运用相关函数,例如: strList.contains(str)(判断数组中是否包含字符串str,包含则返回t ...
- 201521123006 《java程序设计》 第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) **1.2 ...
- 201521123069 《Java程序设计》 第9周学习总结
1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. (1)使用try...catch语句捕获异常(try块后可跟一个或多个catch块,注意子类异常要放在父类异常前面, ...