在当今这个大数据时代,Hadoop 作为一款强大的分布式数据处理框架,成为了许多企业和开发者处理海量数据的利器。本文将带你从入门到实战,详细讲解如何搭建 Hadoop 2.6.0 环境,让你轻松掌握大数据处理。
一、Hadoop 简介
Hadoop 是一个开源的分布式系统基础架构,用于存储和处理大规模数据集。它由三个核心组件组成:Hadoop Distributed File System (HDFS)、Hadoop YARN 和 Hadoop MapReduce。
- HDFS:一个分布式文件系统,用于存储海量数据。
- YARN:一个资源管理器,用于管理集群资源。
- MapReduce:一个编程模型,用于处理大规模数据集。
二、Hadoop 2.6.0 环境搭建
1. 准备工作
在搭建 Hadoop 2.6.0 环境之前,我们需要准备以下条件:
- 操作系统:推荐使用 Linux 系统,如 Ubuntu 或 CentOS。
- Java 环境:Hadoop 需要 Java 运行环境,推荐使用 Java 8。
- SSH:用于远程登录和管理集群。
2. 安装 Hadoop
2.1 下载 Hadoop
首先,从 Hadoop 官网下载 Hadoop 2.6.0 版本的安装包。
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
2.2 解压安装包
将下载的安装包解压到指定目录。
tar -zxvf hadoop-2.6.0.tar.gz -C /opt/hadoop
2.3 配置环境变量
编辑 ~/.bashrc 文件,添加以下内容:
export HADOOP_HOME=/opt/hadoop/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后,使环境变量生效:
source ~/.bashrc
3. 配置 Hadoop
3.1 配置核心配置文件
编辑 hadoop-2.6.0/etc/hadoop/core-site.xml 文件,添加以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
3.2 配置 HDFS 配置文件
编辑 hadoop-2.6.0/etc/hadoop/hdfs-site.xml 文件,添加以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3.3 配置 YARN 配置文件
编辑 hadoop-2.6.0/etc/hadoop/yarn-site.xml 文件,添加以下内容:
<configuration>
<property>
<name>yarn.resourcemanager.host</name>
<value>localhost</value>
</property>
</configuration>
4. 格式化 HDFS
在配置完 Hadoop 后,我们需要格式化 HDFS,以便创建 HDFS 文件系统。
hdfs namenode -format
5. 启动 Hadoop 集群
5.1 启动 NameNode
start-dfs.sh
5.2 启动 ResourceManager
start-yarn.sh
5.3 启动 HistoryServer
mr-jobhistory-daemon.sh start historyserver
三、Hadoop 实战
现在我们已经搭建好了 Hadoop 2.6.0 环境,接下来我们将通过一个简单的例子来展示如何使用 Hadoop 处理数据。
3.1 编写 MapReduce 程序
创建一个名为 WordCount.java 的 Java 程序,实现以下功能:统计输入文件中单词的出现次数。
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordCount {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
String[] tokens = value.toString().split("\\s+");
for (String token : tokens) {
word.set(token);
context.write(word, one);
}
}
}
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
3.2 编译程序
将 WordCount.java 文件编译成 class 文件。
javac -cp $HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar \
-cp $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar \
WordCount.java
3.3 运行程序
将编译好的 class 文件移动到 Hadoop 的 lib 目录下,然后运行以下命令:
hadoop jar WordCount.jar wordcount /input /output
其中,/input 是输入文件路径,/output 是输出文件路径。
3.4 查看 HDFS 中的输出结果
在 HDFS 中查看输出结果:
hdfs dfs -cat /output/part-r-00000
四、总结
通过本文的讲解,相信你已经成功搭建了 Hadoop 2.6.0 环境,并学会了如何使用 Hadoop 处理数据。希望这篇文章能帮助你更好地掌握大数据处理技术。在今后的学习和工作中,请继续努力,不断探索和突破。
