| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 学习 HDFS的JavaAPI操作 -> 正文阅读 |
|
[大数据]学习 HDFS的JavaAPI操作 |
一、HDFS的JavaAPI操作 之前我们都是用HDFS Shell来操作HDFS上的文件,现在我们通过编程的形式操作HDFS,主要就是用HDFS中提供的JavaAPI构造一个访问客户对象,然后通过客户端对象对HDFS上的文件进行相应的操作(新建、上传、下载、删除等)。 1、常用的类 (1)Configuration:该类的对象封装了客户端或服务器的配置 (2)FileSystem:该类的对象是一个文件系统对象,通过该对象调用一些他的方法,从而实现对文件的操作。
2.HDFSAPI开发的步骤 (1)在HDFS上创建文件夹 ? ? ?A.设置客户端身份,以具备权限在hdfs上进行操作 ? ? ? ? System.setProperty("HADOOP_USER_NAME","root”); ? ? ?B.与HDFS建立连接 ? ? ? ? ?a.创建配置对象实例
? ? ? ? ?b.设置操作的文件系统是hdfs,并且指定hdfs的操作地址
? ? ? ? ?c.创建FileSystem对象 ? ? ? ? ? ?FileSystem fs = FileSystem.get(conf); ? ? ? ? ?d.断开与HDFS平台的连接 ? ? ? ? ? ? fs.close(); ? ? ?C.判断要创建目录是否存在,不存在则创建 ?(2)在HDFS上传文件 ?(3)从HDFS上下载文件 ?(4)从HDFS上删除文件 在IDEA中的实例: ?需要注意的以下几点: 1)导入Configuration时必须是hadoop.conf.Configuration ? ? ?导入FileSystem时必须是hadoop.fs.FileSystem ? ? ?导入Path时必须是hadoop.fs.Path 2)"fs.defaultFS","hdfs://192.168.204.125:9000"此处可以在虚拟机中配置hadoop下的core-site.xml文件里查看 ?注意这里的master1即192.168.204.125(linux下可以直接写master1主机名,是因为配置hadoop时做了hosts映射,而IDEA中没有做hosts映射,所以必须写192.168.204.125这样的主机ip) 3)"hdfs://(192.168.204.125):9000"此处的ip是虚拟机中的master主机的ip IDEA中运行错误: 1)首先在电脑本地下载一个Hadoop安装包,后解压,将解压后的hadoop-2.4.1、winutils.exe?和hadoop.dll这三个文件放到同一目录下 2)将log4j.properties文件粘贴到IDEA中创建的类的对应src下 3)将winutils.exe?和hadoop.dll放到解压好的hadoop-2.4.1的bin目录下 4)配置hadoop坏境变量: 此电脑----属性----高级系统设置----环境变量----新建: 变量值必须是你所解压的hadoop-2.4.1的路径 在系统变量中找path变量将hadoop引用进去 path----编辑----新建----添加一行:%HADOOP_HOME%\bin? 5)?Windows键+R:打开cmd,输入hadoop,后输入hadoop version ?hadoop环境变量配置完成 6)重启IDEA后重新运行 7)依旧报错: a.查看虚拟机中hadoop是否启动,jps后进程是否都有 b.若没有namenode或datanode:进去到hadoop目录下的dfs下,删除dfs(rm -rf)下的所有文件,后命令行中输入hdfs namenode -format(格式化hdfs命令),重新启动hadoop:start-all.sh c.如果是格式化重启hadoop后是有namenode没有datanode或者有datanode没有namenode这种情况时: 原因: 可能是当我们使用hadoop?namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致。 解决方法: 在dfs/name目录下找到一个current/VERSION文件,记录clusterID并复制,后dfs/data目录下找到一个current/VERSION文件,将其中clustreID的值替换成刚刚复制的clusterID的值即可;重新启动hadoop,jps就有了 d.继续报错: ? 这样的错误,首先可以打开192.168.204.125:50070网址查看Live Nodes ? 若显示为1,则证明slave1和slave2中node进程没有 解决方法: 在master1主机中重新给slave1和slave2中传输即可? ?重新启动hadoop,然后jps就有了 然后重新启动IDEA,重新运行 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 5:15:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |