默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
(只有一个JVM进程,没有分布式,不使用HDFS)
环境:
Java 查看安装教程
Ubuntu13.10(32位/64位均可) 下载
安装:
在用户主目录新建文件夹hadoop,Hadoop将安装在该目录~/hadoop
Hadoop安装
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.2.0/hadoop-3.2.0.tar.gz INSTALL_PATH=/opt/soft TAR_FILE=`pwd`/hadoop-3.2.0.tar.gz # 安装 mkdir -p $INSTALL_PATH tar -xzf $TAR_FILE -C $INSTALL_PATH HADOOP_FOLDER=`tar -tvzf $TAR_FILE |head -1 |awk -F' ' {'print $6'} |awk -F'/' {'print $1'}` ln -s $INSTALL_PATH/$HADOOP_FOLDER $INSTALL_PATH/hadoop # 修改系统环境变量 echo -e ' #Hadoop' >> /etc/profile echo 'export HADOOP_HOME='$INSTALL_PATH'/hadoop' >> /etc/profile echo 'export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH' >> /etc/profile # 测试 source /etc/profile hadoop version
运行测试 (注:Hadoop刚完成安装不修改配置文件即为单机模式)
测试一:wordcount
在主文件下新建hadoopTest文件夹,创建in子文件夹,创建任意文本文档内容
cd ~/hadoop/hadoop/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount ~/hadoopTest/in ~/hadoopTest/out
查看结果
cat ~/hadoopTest/out/part-r-00000
hadoop单机运行可以不打包成jar: hadoop 主类名 [输入输出目录等参数]
相比用java运行,使用hadoop命令会自动添加hadoop库文件到classpath
[注意]要实现不打包运行,需要修改环境变量
sudo gedit /etc/profile
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:.
输出命名方式:
map输出:part-m-nnnnn
reduce输出:part-r-nnnnn
其中nnnnn为分块序号,从0开始。
分布式下Map的输出是在硬盘上而不是hdfs,因为它作为中间结果是临时的,一旦写入hdfs就会分布式存储并备份。
example中的样例程序说明
资料:
Hadoop - YDN https://developer.yahoo.com/hadoop/