MyException - 我的异常网
当前位置:我的异常网» 综合 » Hadoop 2.8.x 分布式存储 HDFS 根本特性, Java示例

Hadoop 2.8.x 分布式存储 HDFS 根本特性, Java示例连接HDFS

www.MyException.Cn  网友分享于:2013-10-08  浏览:0次
Hadoop 2.8.x 分布式存储 HDFS 基本特性, Java示例连接HDFS

02_note_分布式文件系统HDFS原理与操作,HDFS API编程;2.xHDFS新特性,高可用,联邦,快照

HDFS基本特性

/home/henry/app/hadoop-2.8.1/tmp/dfs/name/current - on namenode

                cat ./VERSION

                                namespaceID (空间标识号,类似集群识别号)

/home/henry/app/hadoop-2.8.1/tmp/dfs/data – on datanode

                ls -lR

                                blk_1073741844xx  (数据块,典型的数据块大小是64M)

/home/henry/app/hadoop-2.8.1/etc/hadoop/hdfs-site.xml

                <name>dfs.replication</name>  (设定block副本数,所有block都有副本)

机架感知功能(本机架其他机架都有副本,避免整个机架故障,也提高网络效率)

                core-site.xml中配置          

                                <name>topology.script.file.name</name>  (指定机架感知脚本文件RackAware.py)

                                <name>topology.script.number.args</name>  (指定机架服务器数量)

心跳机制

                datanode定期发送block report给namenode

                如果没有定期收到信号,则namenode会标记该datanode宕机,不会给IO需求,如果datanode失效造成副本数量下降,并且低于预先设置的阈值,namenode会在合适的时机迕行重新复制

安全模式

                Namenode启动时先经过"安全模式"

"安全模式"期间收集data block,当检测到副本数不足的data block,会复制达到最小副本数才结束安全模式

                hadoop dfsadmin -safemode enter  -   强制进去安全模式

                hadoop fs -put 等增删操作在安全模式下会报错

                hadoop dfsadmin -safemode leave  -  关闭安全模式

校验和

blk_1073741844xx.meta   (文件创立时,每个数据块都产生CRC校验和保存在blk-xxx.meta同名文件中,获取数据时检查以确定block是否损坏)

打开回收站

                core-site.xml中配置

                                <name>fs.trash.interval</name>

                                <value>10080</value>  -  时间阈值(单位分钟),-rm删除的文件会放到.trash下,过阈值时间后被删

除,0则禁用

                                                恢复文件,-mv到相应目录即可

                                                -expunge, 清空回收站

                                                hadoop fs -rm -r -skipTrash  -  会直接删除不经过tash

                默认只有hadoop shell才会删除到trash,其他程序化操作不会move to trash,例如webHDFS,java API等,除非代码写入call to the trash functionality

元数据保护

                映像文件和事务日志是namenode核心数据,可以配置为多个副本

                增强安全性,但降低namenode处理速度

                namenode依然是单点,故障需要手动切换2nd namenode

Snapshot快照功能-2.x支持xxx重要需求xxx

http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html)

         snapshot不是整体备份,需要对某个目录创建snapshot则对该目录hdfs dfsadmin -allowSnapshot ./in (对./in目录开启)         

                                hdfs dfsadmin -allowSnapshot <path>  -  需要开启备份的folder,可以开启多个path     

                                hdfs dfsadmin -disallowSnapshot <path>

                                hdfs dfs -createSnapshot <path> [<snapshotName>]

<snapshotName>optional参数,不设置则defaul with the format "'s'yyyyMMdd-HHmmss.SSS", e.g. "s20130412-151029.033"

                                hdfs dfs -deleteSnapshot <path> <snapshotName>

                                hdfs dfs -renameSnapshot <path> <oldName> <newName>

                                hdfs lsSnapshottableDir  -  获取当前用户权限下的所有开启snapshot的目录

                                hdfs dfs -ls ./in/.snapshot  -  访问snapshot需要后边加/.snapshot才可以

                                hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>  -  获取不同snapshot的更改记录

                                                                +              The file/directory has been created.

                                                                -               The file/directory has been deleted.

                                                                M            The file/directory has been modified.

                                                                R              The file/directory has been renamed.

Block Pool (块池的概念)

HDFS Federation (HDFS联邦)

                并非HA,不是互相冗余,namenode失效会造成部分数据无法访问,类似拼图的概念

                比较大的集群,遇到namenode性能瓶颈才会需要

                hdfs-site.xml配置(多个namenode)

                格式化多个namenode

                                hdfs namenode -format[-clusterId <cluster_id>] > 第一个namenode,clusterid可选,会自动生成

         hdfs namenode -format -clusterId <cluster_id> > 第二个namenode,必须指定clusterID,才能跟第一个namenode绑定在同一个Federation

2.x 支持多个NameNode,可以分散负载,得到性能保障

命名空间管理 - Client Side Mount Table

 

添加新datanode节点

                install hadoop on new datanode and copy config from namenode

                update masters and slaves file on all namenode and datanode

                config no pwd access

                start datanode and nodemanager

                start-balancer.sh 进行负载均衡

 Java连接HDFS, Run URLCat.java 示例程序

    echo $HADOOP_CLASSPATH 返回hadoop-env.sh默认的classpath配置,并copy新建HADOOP_CLASSPATH到/etc/profile

                自己存放.class的path添加到HADOOP_CLASSPATH中 source /etc/profile

    需要配置HADOOP_CLASSPATH,把用来放.class文件的path放进去(/home/henry/myjava/class/),否则在运行编译后的程序会报错 "Could not find or load main class"

    HADOOP_CLASSPATH可以在HADOOP_HOME/etc/hadoop/hadoop_env.sh配置,也可以直接在/etc/profile配置

                hadoop classpath  >  取回当前的HADOOP_CLASSPATH配置

                cd ~/myjava

                javac -cp ../app/hadoop-2.8.1/share/hadoop/common/hadoop-common-2.8.1.jar URLCat.java  -d ./class/

    javac -cp $HADOOP_CLASSPATH URLCat.java -d ./class/  (因为已经配置相关的.jar包到HADOOP_CLASSPATH,可以直接调用)

    javac编译的时候一定要加上已经配置的class path,比如-d ./class/, 负责运行时找不到会报错, 因为已经把.class path配置到HADOOP_CLASSPATH

     1) hadoop URLCat hdfs://master.henry:9000/user/henry/in/README.txt (需要把.class path配置到HADOOP_CLASSPATH,编译后可以在任意path下运行)

                                jar -cvf URLCat.jar

                2) hadoop jar ./URLCat.jar URLCat hdfs://master.henry:9000/user/henry/in/README.txt

                                不需要把.class path配置到HADOOP_CLASSPATH

                                但是必须在存放.class的path下运行才可以,否则识别不到.class文件

    Eclipse下写的.java代码需要去掉包名再编译成class文件(或直接linux下javac编译)再移动到Linux下打包成jar文件

修改Java文件使用UTF-8编码,否则linux上编译乱码报错

                菜单导航栏上Window-->Preferences 打开"首选项"对话框,左侧导航树,导航到 General-->Workspace

                修改单个项目的Java文件编码为UTF-8,package或者文件右键properties>resource>text file encoding

                javac -encoding utf-8 (指定编译使用UTF-8编码)

 Ant使用

                download and tar apache_ant

                add ant_home and bin to /etc/profile

                ant -version ok

                Copy MapReduce_Cookbook_Code到Mater

                随便进入源码目录,主要有.src目录(存放.java)和build.xml配置文件

                build.xml - 配置文件(比如编译使用的jar包路径,编译源目录,编译后.class放置路径等等)

                执行ant命令会直接生成一个build目录(存放.class文件) - build.xml中配置的

文章评论

程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
老程序员的下场
老程序员的下场
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
每天工作4小时的程序员
每天工作4小时的程序员
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
漫画:程序员的工作
漫画:程序员的工作
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
如何成为一名黑客
如何成为一名黑客
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
10个调试和排错的小建议
10个调试和排错的小建议
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
总结2014中国互联网十大段子
总结2014中国互联网十大段子
我是如何打败拖延症的
我是如何打败拖延症的
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员应该关注的一些事儿
程序员应该关注的一些事儿
鲜为人知的编程真相
鲜为人知的编程真相
那些争议最大的编程观点
那些争议最大的编程观点
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
中美印日四国程序员比较
中美印日四国程序员比较
 程序员的样子
程序员的样子
程序员和编码员之间的区别
程序员和编码员之间的区别
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员的鄙视链
程序员的鄙视链
编程语言是女人
编程语言是女人
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
旅行,写作,编程
旅行,写作,编程
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Java程序员必看电影
Java程序员必看电影
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有