本地模式
特点:只需要一台服务器,没有HDFS、只能测试 MapReduce 程序,MapReduce 处理的是本地 Linux 的文件数据。
配置步骤:
-
修改 hadoop-2.7.3/etc/hadoop 目录下的 hadoop-env.sh 文件,在第 25 行做如下修改(配置JAVA_HOME):
export JAVA_HOME=/root/training/jdk1.8.0_144
-
测试 MapReduce 程序:
2.1. 创建目录 mkdir ~/input 作为测试数据的存放目录。
2.2. 在 input 目录下创建 data.txt 文件,内容如下:
I love Beijing I love China Beijing is the capital of China
2.3. 运行 hadoop 自带的一个 MapRecue 程序中的词频统计程序:
首先切换到 /root/training/hadoop-2.7.3/share/hadoop/mapreduce/ 目录下。
执行如下命令:
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount ~/input ~/output
该命令会运行 hadoop-mapreduce-examples-2.7.3.jar 中的 wordcount 程序,统计 ~/input 目录下所有文件中所有单词出现的频率,结果会保存到 ~/output 目录下。
注:不要事先创建 ~/output 目录,否则程序会抛出异常,程序在运行的时候会自动创建 ~/output 目录。
2.4. 运行成功的话会在 ~/output 目录下产生两个文件:part-r-00000,_SUCCESS。_SUCCESS 这个文件是一个空文件,出现这个文件说明词频统计成功。part-r-00000 这个文件里面存储的是 ~/input 目录下每个单词出现的次数,内容如下:
伪分布模式
特点:只需要一台服务器,模拟一个分布式的环境,具备 Hadoop 的主要功能。
配置步骤:
-
修改 hadoop-2.7.3/etc/hadoop 目录下的 hadoop-env.sh 文件,在第 25 行做如下修改(配置JAVA_HOME):
export JAVA_HOME=/root/training/jdk1.8.0_144
-
修改 hdfs-site.xml 文件,添加的内容如下:
<!-- 原则:一般数据块的冗余度跟数据节点(DataNode)的个数一致;最大不超过3 --> <!--表示数据块的冗余度,默认:3--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--是否开启HDFS的权限检查,默认true--> <property> <name>dfs.permissions</name> <value>false</value> </property>
-
修改 core-site.xml 文件,添加内容如下:
<!--配置NameNode地址,9000是RPC通信端口--> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata111:9000</value> </property> <!--HDFS数据保存在Linux的哪个目录,默认值是Linux的tmp目录-->