Hadoop伪分布安装及简单使用

如何安装Hadoop

参考: http://dblab.xmu.edu.cn/blog/install-hadoop/

设置Hadoop环境变量

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

如果不加最后一条,会出现以下错误

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable](http://www.cnblogs.com/likui360/p/6558749.html)

安装方式


这里采用伪分布安装配置:

核心

1.属于HDFS的节点
  • NameNode

名称节点,相当于目录服务器 ,应用来取数据的时候,首先访问NameNode,去获得我要访问的数据到底放在了哪个DataNode上面.
名称节点包括:

再来看一下FsImage,它维护的信息包括以下:

注意:

块在哪个节点存储的并不是由FsImage维护的,而是一个单独的内存区域,而是下面这种方式;
DataNode会向NameNode汇报自己节点保存哪些数据块,作为管家的NameNode会构建一个清单,它自己就知道数据块到底分布到了哪个节点.(并不是由FsImage保存的)

  • #####DataNode
2.属于MapReduce的核心组件


JobTracker负责对整个用户作业进行管理,它把一个用户的大作业拆分成小的作业.分发到不同的机器上去执行
TaskTracker每个机器都部署了TaskTracker,每一个负责跟踪和执行分配给自己的那一部分作业

HDFS编程实践

参考 http://dblab.xmu.edu.cn/blog/290-2/

我们又两种方式访问HDFS,如下图所示

在安装完Hadoop后,我们可以使用一下命令启动Hadoop

cd /usr/local/hadoop
hdfs namenode -format #格式化hadoop的hdfs文件系统
./sbin/start-dfs.sh #启动hadoop
方式一:利用shell命令

三种不同的命令类型,适用于不同的情景,具体区别见下图

  • ls列出文件信息,mkdir新建文件夹
  • 本地文件上传到HDFS
hadoop fs -cp 本地文件路径 HDFS路径

web方式(用的比较少)

通过访问 http://localhost:50070

方式二:利用java API

应用商店安装eclipse,默认工作空间.
1)创建项目
File - New -Java Project,输入项目名称,finish

新建class

2)导入jar
为了编写一个能够与HDFS交互的Java应用程序,一般需要向Java工程中添加以下JAR包:
(1)”/usr/local/hadoop/share/hadoop/common”目录下的hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar;
(2)/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包;
(3)“/usr/local/hadoop/share/hadoop/hdfs”目录下的haoop-hdfs-2.7.1.jar和haoop-hdfs-nfs-2.7.1.jar;
(4)“/usr/local/hadoop/share/hadoop/hdfs/lib”目录下的所有JAR包。

/usr/local/hadoop/share/hadoop

右键新建的项目 - 选择properties - 搜索Java Build Path - Libraries -Add External JARS

实例测试

检测分布式文件系统HDFS上到底存不存在一个input.txt文件?
在这之前,还需要一些工作
第一步:
core-site.xmlhdfs-site.xml(在/usr/local/hadoop/etc/hadoop目录下),复制到当前工程项目下,即eclipse工作目录的bin文件夹下面

sudo cp core-site.xml hdfs-site.xml /home/user/workspace/hadoop.test/bin/

第二步: 编写代码

package fileTest;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class FileExitTest {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{
			String filename = "test";
			Configuration conf = new Configuration();
			FileSystem fs = FileSystem.get(conf);
			if(fs.exists(new Path(filename))){
				System.out.println("file exist");
			}else{
				System.out.print("file is not exist");
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

或者采用下面的方法
(此时不需要将core-site.xml和hdfs-site.xml拷贝至项目bin目录下)

package fileTest;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class FileExitTest {
    public static void main(String[] args){
        try{
            String fileName = "test";
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://localhost:9000");
            conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
            FileSystem fs = FileSystem.get(conf);
            if(fs.exists(new Path(fileName))){
                System.out.println("文件存在");
            }else{
                System.out.println("文件不存在");
            }
 
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

应用程序的部署

下面介绍如何把Java应用程序生成JAR包,部署到Hadoop平台上运行。首先,在Hadoop安装目录下新建一个名称为myapp的目录,用来存放我们自己编写的Hadoop应用程序,可以在Linux的终端中执行如下命令:

hadoop@user:/usr/local/hadoop$ cd /usr/local/hadoop
hadoop@user:/usr/local/hadoop$ mkdir myapp



之后jar文件并生成并保存在了/usr/local/hadoop/myapp目录下.
可以采用以下两种命令来执行

cd /usr/local/hadoop
hadoop jar ./myapp/HDFSExample.jar

或者

java -jar ./myapp/HDFSExample.jar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值