您的位置:首页 > 运维架构

hadoop-1

2015-10-27 18:34 274 查看
1.hadoop日志目录配置

hadoop-env.sh进行配置


2.Hadoop配置文件

1. core.site.xml : 配置namenode相关的主机和端口
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
2.mapred.site.xml : 配置JobTracker的主机和端口
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
hadoop2支持第三方 MapReduce 开发框架以支持如 SmartTalk/DGSG 等非 Yarn 架构,
注意通常情况下这个配置的值都设置为 Yarn,如果没有配置这项,那么提交的 Yarn job 只会运行在 locale 模式,
而不是分布式模式.
3.slave : 配置DataNode 和 TaskTracker 的信息

4.hdfs.site.xml : 配置HDFS 的相关信息


3.hadoop Shell脚本

1. start-all.sh : 只在master节点上运行,当使用该脚本时,会先调用 start-dfs.sh,
再调用start-yarn.sh
2. start.dfs.sh : 在master 节点上运行.
在启动时,先启动namenode,再启动datanode,最后启动secondaryNamenode
调用的是hadoop-daemons.sh(start namenode,start datanode,
--hostname start secondarynamenode) 脚本.
3. 在启动服务时候 start.dfs.sh --config CONFIG_DIR:
该选项方便升级使用,


4.HDFS 架构

1. 文件:文件切分为块(64M),以块为单位,存放在不同的主机上,默认副本数为3.
2. NameNode : 是主节点
1).存放文件的的元数据(文件名,文件属性,文件的块列别及其所在的位置等信息).
2).负责处理文件内容的读写请求(告诉客户端文件的位置及其他信息),相关的数据流不会经过NameNode 节点.
3).副本的存放位置由NameNode决定,读取文件数据时先读取用户最近的副本.
4).NameNode 周期性的收集DataNode发送的心跳信号和块状态报告
(心跳:表明DataNode正常工作|块状态报告:表明DataNode都有哪些数据块,**安全模式下检测**).
3. DataNode : 存放数据
1).在本地文件系统存储文件块数据以及数据的校验和和时间戳.
2).周期性的向NameNode发送块报告(一小时).
3).周期性发送心跳信号(3秒),心跳返回结果带有NameNode给该DataNode的命令(比如复制数据库到另一台机器),
若10分钟没有收到DataNode的心跳信号,则认为该DataNode不可用.
4. 权限中的 x 对于文件是忽略的,对于目录表示是否可以访问.
5. 集群在运行的过程中可以安全的加入或退出一些机器.
6. 副本存放策略:
副本1:同client的节点上.
副本2:和副本1不同的机架上.
副本3:和副本2同机架的不同机器上.
7. 数据损坏:NameNode 标记该块已经损坏,赋值块达到预期的备份数.DataNode在文件创建三周后验证checksum.


5.HDFS文件读写

1. 文件的读取:
1).Client通过FileSystem.open()方法从NameNode获取文件块(部分block或全部block)所在的位置
2).选取离Client最近的一个DataNode建立连接,并且返回一个FSDataInputStrean流.
3).Client开始读取block信息,当读取到block的结尾时,FSDataInputStream关闭与当前DataNode的连接,
并为读取下一个block做准备(仍然选取最近的).
4).若block读取完之后文件还没有结束,则会再次通过NameNode获取下一批的block.
5).Client在读取block时会进行checksum验证,若有错,会报告到NameNode,换下一个block继续读取.
2.文件的写入:
1).通过FSFileSystem的create方法向NameNode发出请求,在NameNode中创建新的文件,
但是并不关联任何数据块.
2).NameNode检查文件是否存在/操作权限,如果通过,NameNode记录新文件信息,
并在某一DataNode上创建数据块.
3).返回FSDataOutputStream,由Client执行write操作.
4).FSDataOutputStream将数据写到第一个DataNode上,然后由DataNode进行复制到其他的节点.
5).block完成复制后,NameNode返回成功消息.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: