Hadoop入门系列(四) HDFS的使用与编程 |
您所在的位置:网站首页 › hadoop编程培训学校 › Hadoop入门系列(四) HDFS的使用与编程 |
Hadoop入门系列(四) HDFS的使用与编程
内容
使用Hadoop Shell命令操作hdfs文件系统,熟悉分布式文件系统及操作命令。配置Maven及使用Maven构建的Hadoop工程项目。使用Hadoop的JAVA api操作hdfs文件系统。
HDFS的使用与编程
HDFS基本命令
mkdir创建文件目录 hadoop fs -mkdir -p /Software/hadoop/ hadoop fs -mkdir -p hdfs://localhost:9000/Software/Java/put上传文件 hadoop fs -put ~/hadoop-2.8.3.tar.gz /Software/hadoop/ hadoop fs -put ~/jdk-8u172-linux-x64.rpm /Software/Java/ hadoop fs -put /usr/local/hadoop2/README.txt /ls显示目录结构 hadoop fs -ls /Software/chmod修改文件权限 hadoop fs -chmod 600 /Software/hadoop hadoop fs -ls /Software/rm删除文件 hadoop fs -rm /Software/Java/*rmdir删除目录 hadoop fs -rmdir /Software/Javaget下载文件 hadoop fs -get /README.txt ~ ls -l ~cat显示文件内容 hadoop fs -cat /README.txtcp复制文件 hadoop fs -cp /Software/hadoop/hadoop-2.8.3.tar.gz /Softwaremv移动文件 hadoop fs -mkdir -p /input hadoop fs -mv /README.txt /input 使用Java API 访问HDFS文件系统ApacheMaven是一套软件工程管理和整合工具。基于工程对象模型(POM)的概念 通过一个中央信息管理模块,Maven能够管理项目的构建、发布、报告和文档。即使常用 的Eclipse这样的JavaIDE开发环境,其内部也是通过Maven管理Java项目的。在编程时, 通过Maven的包管理功能可以自动下载程序所需要的jar包,使得开发过程十分方便。 MAVEN 的安装与配置这里的安装包我已经事先准备好了,所以可以直接从sudo tar开始执行 cd curl -O http://mirrors.shu.edu.cn/apache/maven/binaries/apache-maven-3.2.2-bin.tar.gz sudo tar -xvf ./apache-maven-3.2.2-bin.tar.gz -C /usr/local/ echo 'export MAVEN_HOME=/usr/local/apache-maven-3.2.2 > export MAVEN_OPTS="$MAVEN_OPTS -Xms256m -Xmx512m -XX:ReservedCodeCacheSize=64m" > export PATH=${PATH}:${MAVEN_HOME}/bin' > ~/maven.sh sudo mv ~/maven.sh /etc/profile.d/ source /etc/profile.d/maven.sh mvn --version
由于Maven 缺省使用国外的中央仓库,使得下载依赖包时十分缓慢,因此,需要将中央仓库配置为国内的阿里云中央仓库。 打开maven的配置文件 sudo gedit /usr/local/apache-maven-3.2.2/conf/settings.xml在本实验中我们将要开发一个读取并显示hdfs文件系统根目录下的README.txt文件 的程序。 为此我们采用Maven构建Java项目 使用Maven只要学习很少的命令就可以创 建和管理Java项目 在命令行下执行以下代码,以创建Java项目。 cd ~ mvn archetype:generate -DgroupId=edu.dufe.hdfstest -DartifactId=HdfsCatREADME -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
然后在CentOS7桌面上,使用gedit打开HdfsCatREADME/pom.xml文件。将以下红色内 容添加到文件的对应位置处。 下面是整个文件修改后的内容 4.0.0 edu.dufe.hdfstest HdfsCatREADME jar 1.0-SNAPSHOT HdfsCatREADME http://maven.apache.org org.apache.hadoop hadoop-hdfs 2.8.3 org.apache.hadoop hadoop-common 2.8.3 org.apache.hadoop hadoop-mapreduce-client-core 2.8.3 org.apache.hadoop hadoop-client 2.8.3 org.apache.hadoop hadoop-auth 2.8.3 junit junit 3.8.1 test HdfsCatREADME org.apache.maven.plugins maven-jar-plugin 2.4 edu.dufe.hdfstest.HdfsCatREADME true lib/ lib/slf4j-api-1.7.13.jar org.apache.maven.plugins maven-dependency-plugin copy package copy-dependencies ${project.build.directory}/lib接下里编写Java源程序 gedit src/main/java/edu/dufe/hdfstest/HdfsCatREADME.java package edu.dufe.hdfstest; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class HdfsCatREADME { public static void main(String[] args) { try { String dsf = "hdfs://127.0.0.1:9000/README.txt"; Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(dsf),conf); FSDataInputStream hdfsInStream = fs.open(new Path(dsf)); byte[] ioBuffer = new byte[1024]; int readLen = hdfsInStream.read(ioBuffer); while(readLen!=-1) { System.out.write(ioBuffer, 0, readLen); readLen = hdfsInStream.read(ioBuffer); } hdfsInStream.close(); fs.close(); } catch (IOException e) { e.printStackTrace(); } } } 使用 Maven 编译打包Java项目项目开发完成后,我们就可以编译、打包项目了,为此执行以下命令。 cd ~/HdfsCatREADME mvn clean compile mvn clean package当命令执行后,显示出[INFO] BUILD SUCCESS内容时,说明编译打包成功。这里 在~/HdfsCatREADME目录下就会多出一个target的文件夹, 并在此文件夹下有编译打包好 的目标程序 HdfsCatREADME.jar 如果编译失败,则有可能是源程序有错误,请根据出错 提示,仔细核对源程序是否正确。如果打包失败,请检查pom.xml文件是否正确。下图是成功的结果 这里我产生了如下的报错 Call From HadoopMaster/192.168.206.15 to localhost:9000 failed on connection exception: java.net.ConnectException: 拒绝连接;仔细一看 拒绝连接,是因为我重启虚拟机之后尚未启动hadoop 这里只需要start-dfs.sh就可以了 注意要先执行下面命令,不然可能会显示python34不存在 官方的rpm repository提供的rpm包往往是很滞后的,装上了 epel 之后,就相当于添加了一个第三方源 yum install epel-release安装python与hdfs包 sudo yum install python34 #安装python3 sudo yum install python34-pip #安装包管理工具 sudo pip3.4 install hdfs #安装hdfs包
python的操作非常简单 先创建client连接 然后通过client对象来操作hdfs ,下面的代码创建了文件夹并且 列举了根目录的内容 更多python操作的细节 可搜索百度 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |