hadoop-1
2015-10-27 18:34
274 查看
1.hadoop日志目录配置
2.Hadoop配置文件
3.hadoop Shell脚本
4.HDFS 架构
5.HDFS文件读写
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返回成功消息.
相关文章推荐
- 学习Hadoop笔记(二)
- 开发小型网站的历程
- 在Linux和Windows系统上安装Nginx服务器的教程
- [知其然不知其所以然-8] linux cpufreq的sysfs文件详细解释
- linux命令行模式下配置wifi热点
- Linux性能评测工具之一:gprof篇
- 【linux】——一个小程序
- VITA SHOP OPENCART商城自适应主题模板 ABC-0497
- VITA SHOP OPENCART商城自适应主题模板 ABC-0497
- Linux下使用iptables设置访问控制
- SSL、OPENSSL、SSH、OPENSSH
- 老鸟手把手教你利用linux技能追求女孩子
- 老鸟手把手教你利用linux技能追求女孩子
- 老鸟手把手教你利用linux技能追求女孩子
- 利用Cobbler批量布署CentOS
- auto_ptr、shared_ptr、weak_ptr、scoped_ptr用法小结
- SSH Secure Shell Client远程连接到虚拟机的UBUNTU系统
- iftop安装
- 在linux环境下尝试使用gcc编译一个程序,并验证-E\-S\-c选项
- Adobe.CS6.Photoshop MAC 破解