2.HDFS JavaApi 应用
创建maven项目
pom导入jar包依赖,<scope>provided</scope>解释
scope取值 有效范围(compile, runtime, test) 依赖传递 例子
compile all 是 spring-core
provided compile, test 否 servlet-api
runtime runtime, test 是 JDBC驱动
test test 否 JUnit
system compile, test 是
compile :编译、运行、测试 均有效
provided:编译、测试有效
runtime:运行、测试有效
3.IO流读取本地文件
缓存输出流读取 BufferReader
缓存字节数组读取
·定义具体内存缓存数组 new byte[1024]
·定义从is读取具体字节数变量 readSize
·定义缓存 缓存数组的大内存块 baos
·is循环读取 写入到大内存块 baos.write(byteArray,0,readSize)
·大内存块转换为字节数组 baos.toByteArray
·关闭流
·字节数组转换为字符串 newString(byteArraytotal,"utf-8")
hdfs文件的读取
和缓存字节数组结构相似,具体代码有所改动
4.打包jar包
package:仅仅进行package打包操作
install:package+copy 打包并且连同依赖jar包一同打包
·可独立运行的jar包
·仅被依赖的jar包
5.shell上运行jar包
·rz -bye 获取独立运行jar包
·yarn jar T... 运行
6.HDFS六大经典问题
文件储存为什么分block块
·减少寻址时间
·提高吞吐量
block块默认大小
·128M
block块大小是否可变
·可变 也可对单一文件改变 但改变对之前文件不起作用
一个block块是可以存储多个文件
·不可以 先有文件后有block
文件大小小于一个blocksize实际文件占多大
·有多大就是多大
blocksize越大越好还是越小越好
·合适最好 越大,NN压力小DN压力大 越小,NN压力大DN压力小
7. ·args也可以入参
·mainclass不进行说明时,默认对整个项目进行打包
在shell中运行指定类 yarn jar T.. 类名 参数1 参数2
·java中支持对hdfs中快捷指令 mkdir creatFile copyFromLocalFile copyToLocalFile rename remove exists