hadoop集群的安装部署
#本人所写博客只作为自己的操作记录和笔记分享出来让大家参考学习如有什么技术漏洞和bug请多多指教与包涵!
Hadoop简介n 2.X
HDFS yarn mapreduce
– 分布式存储系统HDFS (Hadoop Distributed File System )
– 分布式存储系统
– 提供了 高可靠性、高扩展性和高吞吐率的数据存储服务
– 分布式计算框架MapReduce
– 分布式计算框架
– 具有 易于编程、高容错性和高扩展性等优点。
– YARN:Yet Another Resource Negotiator
– ResourceManager:负责整个集群的资源管理和调度
– ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监
控和容错等
– YARN的引入,使得多个计算框架可运行在一个集群中
– 每个应用程序对应一个ApplicationMaster
– 目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等
HDFS优点:
高容错性
– 数据自动保存多个副本
– 副本丢失后,自动恢复
– 适合批处理
– 移动计算而非数据
– 数据位置暴露给计算框架
适合大数据处理
– GB 、TB 、甚至PB 级数据
– 百万规模以上的文件数量
– 10K+ 节点
– 可构建在廉价机器上
– 通过多副本提高可靠性
– 提供了容错和恢复 机制
HDFS缺点:
低延迟数据访问
– 比如毫秒级
– 低延迟与高吞吐率
– 小文件存取 128M
– 占用NameNode 大量内存
– 寻道时间超过读取时间
– 并发写入、文件随机修改
–一个文件只能有一个写者
– 仅支持append
HDFS 数据存储单元(block)
文件被切分成固定大小的数据块
– 默认数据块大小为128MB可配置
– 若文件大小不到128MB ,则单独存成一个block
– 一个文件存储方式
– 按大小被切分成若干个block ,存储到不同节点上
– 默认情况下每个block都有三个副本
– Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本
数可以变更,Block Size不可变更
NameNode(NN)
NameNode主要功能:接受客户端的读写服务
– NameNode保存metadate信息包括
– 文件owership和permissions
– 文件包含哪些块
– Block保存在哪个DataNode(由DataNode启动时上报)
– NameNode的metadate信息在启动后会加载到内存
– metadata存储到磁盘文件名为”fsimage”
– Block的位置信息不会保存到fsimage
– edits记录对metadata的操作日志
SecondaryNameNode(SNN)
它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits
log,减少NN启动时间。
– SNN执行合并时机
– 根据配置文件设置的时间间隔fs.checkpoint.period 默认3600秒
– 根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默
认是64MB
DataNode(DN)
存储数据(Block)
– 启动DN线程的时候会向NN汇报block信息
– 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收
到DN的心跳,则认为其已经lost,并copy其上的block到其它DN
MapReduce设计理念
– 何为分布式计算。
– 移动计算,而不是移动数据
Mapper
Map–reduce的思想就是“分而治之”
– Mapper负责“分”,即把复杂的任务分解为若干个“简单的任务”执行
– “简单的任务”有几个含义:
– 数据或计算规模相对于原任务要大大缩小;
– 就近计算,即会被分配到存放了所需数据的节点进行计算;
– 这些小任务可以并行计算,彼此间几乎没有依赖关系
Reducer
对map阶段的结果进行汇总。
– Reducer的数目由mapred–site.xml配置文件里的项目mapred.reduce.tasks
决定。缺省值为1,用户可以覆盖之
hadoop环境
我有5台虚拟机 名字为 one two three four five one安装一次其它几台均为one的克隆只是做一点修改如下
修改每台机器的IP
vim /etc/sysconfig/network–scripts/ifcfg–ens33
hostnamectl set–hostname two
hostname
reboot –f
1.虚拟机至少5台,具备20G以上的存储空间
2.安装JDK(我这里使用的是1.8)版本
3.下载hadoop包,如果网络允许可以使用wget下载
因本人习惯喜欢把软件放在/usr/local/ 这个目录下,配置好JDK和hadoop的环境变量后我们需要修改的地方
修改 /usr/local/hadoop/etc/hadoop/core–site.xml
添加配置,第一个value这为我们的主机名
第二个是我们数据存放的目录,这个目录没有,需要我们自己去mkdir创建一下
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://nodeone:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/var/hadoop</value> </property> </configuration>
修改/usr/local/hadoop/etc/hadoop/hadoop–env.sh 在hadoop–env.sh添加环境变量即可
export JAVA_HOME=/usr/local/java
既然配置了那我们顺便也把Mapper 和 yarn的配置文件也配置一下
mapred–site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
yarn–site.xml
<property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux–services</name> <value>mapreduce_shuffle</value> </property> 下列配置不是必须的: <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>
测试期间关闭权限检查
修改hdfs–site.xml 只关闭主节点即可
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
最后关闭防火墙并且永久关闭防火墙
systemctl stop firewalld 查看状态 status 永久关闭disable
第一次启动hadoop需要格式一次hadoop启动命令如下:
hdfs namenode –format 格式化
启动一台namenode 其他启动 datanode
hadoop–damemon.sh start namenode / datanode
nodeone:50070
查看集群情况 hdfs dfsadmin –report
这里说一下集群的管理一键启动hadoop的配置 修改slaves里面吧小弟(datanode的主机名字写进去就行了)
/usr/local/hadoop/etc/hadoop/slaves
#我的datanode有
two
three
four
five
记得设置免秘钥登录
cd .ssh
ssh–keygen –t rsa
ssh–copy–id two
博主提示注意多看官方文档
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html
本文来自博客园,作者:后山人,转载请注明原文链接:https://www.cnblogs.com/zhuhuibiao/p/12961953.html
经营好自己的现在,等待未来向我飞奔而来。