前言
本文不打算介绍除了Hadoop安装相关外的任何知识,旨在快速引导已经阅读了相关介绍的你,运行起Hadoop版本的"HelloWorld"。
阅读此文,确定的硬件配置为:
- Windows
- VMware
- Linux镜像(Redhat等)
- Hadoop-0.20.2
- JDK1.7 for Linux
Hadoop从三个角度把机器划分为两种角色。
- Master与Slave。这是说得机器在职能上的主从关系,较为抽象,适当理解。
-
NameNode与DataNode。这是从HDFS的角度上划分的,NameNode管理DataNode的相关信息,DataNode负责存储、维护数据。
-
JobTracker与TastTracker。这是从MapReduce角度划分的,一个Job可以被"拆分"为多个Task;其中JobTracker负责调度任务,TaskTracker负责执行。
Hadoop有三种运行方式:
- 完全分布式。NameNode和DataNode完全由不同机器担任。
-
伪分布式。此文所采用的方式;除了硬件要求低,配置简单外,程序运行方式和完全分布式没有太大差别,非常适用于开发。
- 单节点。不需要配置,将Hadoop作为一个单独的java进程。Hadoop的Eclipse插件默认的运行方式。
开始安装:
在VMware上安装Linux
安装步骤略,要求:
- 用户名必须为hadoop(其实不必这样,但是刚接触新东西的时候,多一事不如少一事。)
- 将这个虚拟系统和你电脑的网络关系设置为:桥接(Bridged)
给用户"hadoop"指派ROOT权限
日后的所有任务都将由hadoop用户完成,所以我们应该给hadoop指派ROOT权限。
我采用的直接修改/etc/sudoer和password文件。参考(http://jingyan.baidu.com/article/6525d4b11baf2fac7d2e94a1.html)
命令(推荐):usermod –g root Hadoop
指定IP信息
打开/etc/sysconfig/network-script/ifcfg-eth0,添加如下信息:
ipaddr=192.100.212 #设ip地址
netmask=255.255.255.0 #设掩码
network=192.100.1.1 #设网络(不设也可以)
gateway=192.100.1.1#网关
附上一张我修改过的配置:注意UUID和HWADDR地址不要更改,默认就好。
在新安装的Linux上安装JDK
下载Linux版本的JDK1.7。
拷贝到Linux里。下图是一个快捷方式,大家可以尝试下。以后本文都是基于此方式的。
首先赋予这个文件夹最宽容的权限(任何人都可以操作,777)
cd /mnt/hgfs/
chmod -R 777 PublicData
现在,安装JDK
cd /mnt/hgfs/PublicData
rpm –ivh jdk-7u51-linux-x64.rpm
完成之后:
Java –version
看到版本信息即为安装成功。你可以使用javac和java命令试一试。
安装并配置Hadoop
1,在Windows系统中,将Hadoop发行包解压到共享的那个目录:tar –xvf Hadoop-0.20.2.tar.gz
2,将解压后的hadoop目录复制到你的主目录下:cp –R Hadoop-0.20.2 ~/ (以后~/Hadoop-0.20.2就是hadoop的安装目录了).
3,在和hadoop同级的目录下新建一个hadoop-data目录:mkdir ~/Hadoop-data
4,更改hadoop的默认设置,使之运行在伪分布式环境下:
4.1,进入hadoop安装目录下的conf文件夹: cd ~/Hadoop-0.20.2/conf
4.2,修改core-site.xml,增加如下属性:
<property><name>fds.permissions</name><value>false</value></property>
<property><name>fs.default.name</name><value>hdfs://hadoop:9000</value></property>
<property><name>dfs.name.dir</name><value>/home/hadoop/hadoop-data/name</value> </property>
<property><name>dfs.data.dir</name><value>/home/hadoop/hadoop-data/data</value></property>
<property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop-data/temp</value> </property>
4.3,修改hdfs.site.xml,增加如下属性:
<property><name>dfs.permissions</name><value>false</value></property>
<property><name>dfs.replication</name><value>1</value></property>
4.4修改mapper.site.xml,增加如下属性:
<property><name>mapred.job.tracker</name><value>hadoop:9001</value></property>
4.5修改hadoop-env.sh,增加如下内容:
# The java implementation to use. Required.
export JAVA_HOME=/usr/java/jdk1.7.0_51
# Extra Java CLASSPATH elements. Optional.
export HADOOP_CLASSPATH=.
# The maximum amount of heap to use, in MB. Default is 1000.
export HADOOP_HEAPSIZE=1024
4.6修改/etc/hosts文件,添加:192.100.1.211 hadoop hadoop到第一行。
4.7安装SSH
这一步虽然是可选的,但这是日后许多Hadoop子项目运行的必备要素。
cd ~/.ssh
ssh-keygen -t rsa
cp id_rsa.pub authorized_keys
完成之后使用 ssh localhost试试看能不能免密码登录,如果不能,自行使用"Hadoop SSH"为关键字Google。
小结:上面的红色hadoop,就是本Linux系统的名称,IP是LinuxIP
初始化、启动Hadoop
进入Hadoop的安装目录,开始初始化Hadoop。
cd ~/Hadoop-0.20.2
bin/hadoop namenode –format
bin/start-all.sh
命令运行完成之后,访问:http://192.100.1.211:50030/jobtracker.jsp,如果有网页出现,证明环境搭建完成。
如果没有,请检查Hadoop安装目录下logs里面的日志文件,百度之,慢慢排查。但是如果你按照上面的步骤,完整不落地走下来,是没问题的。
总结:不要多次执行bin/hadoop namenode –format,如果确实有需要,请先删除hadoop-data文件夹,再建立,再格式化。
运行WordCount
WordCount是Hadoop里面的HelloWorld。下面我们来运行它。
1,进入到Hadoop的安装目录:cd ~/Hadoop-0.20.2
2,在HDFS中创建一个用于存放WordCount所使用的那些文本数据:bin/hadoop fs -mkdir ~/hadoop-data/input
3,往新建那个HDFS文件夹里面塞几(1)个文本文件:
echo "hello hadoop ,see you world" >> /tmp/file1.txt(看了这个,还有人敢学Hadoop么?)
bin/hadoop fs -put /tmp/file1.txt ~/hadoop-data/input
4,运行jar包:bin/hadoop jar ~/hadoop-0.20.2/hadoop-0.20.2-examples.jar wordcount ~/hadoop-data/input
~/hadoop-data/output
加黑的两个分别表示输入路径和输出路径。另外Hadoop要求每次输出之前,输出文件夹是不存在的。如果我们在本次运行之前已经有过运行经历(不管成功失败),则需要删除输出文件夹:bin/hadoop fs –rm ~/hadoop-data/output
下面是运行本次Job后的结果:
5,查看字数统计结果:bin/hadoop fs -cat ~/hadoop-data/output/*
OK,恭喜你!
在Eclipse3.7(indigo)上编写运行Hadoop程序
每一个苦逼的程序猿,上辈子都是折了翼的天使。下面是Eclipse中配置并运行MapReduce程序的步骤。
准备材料
- Eclipse3.7(运行于Windows下即可)
- 如下路径中的jar包:hadoop-0.20.2\contrib\eclipse-plugin\hadoop-0.20.2-eclipse-plugin.jar
1,复制上面的这个Hadoop为Eclipse提供的插件到Eclipse安装目录下的plugins文件夹里,重启Eclipse。
2,windons->show view->other->map/reduce locations
3,new一发~~~
4,填写相关配置(Linux的ip可以用"hadoop"代替):
这一步完成之后,在Eclipse的项目容器里面应该有如下信息了:
如果没有,请做如下操作:
- 关闭linux防火墙
- 修改Windows的用户名为hadoop
- 其他情况请自行谷歌。
编写并运行第一个MapReduce程序
- 在Eclipse中新建一个map/reduce project,叫做WordCount
-
添加package并新建一个类,例如:
-
复制如下代码:
package org.xiaom.hadoop.demo;
import java.io.IOException;
import java.util.StringTokenizer;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
public
class WordCount implements Tool {
private Configuration conf;
public
static
class TokenizerMapper extends
Mapper<Object, Text, Text, IntWritable>// 前两个表述输入的Key和Value,后两个表示输出的Key和Value
{
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 {
StringTokenizer itr = new StringTokenizer(value.toString());
String sub_str;
while (itr.hasMoreTokens()) {
sub_str = itr.nextToken();
word.set(sub_str);
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 {
System.exit(new WordCount().run(args));
}
@Override
public Configuration getConf() {
if (this.conf == null) {
this.conf = new Configuration();
}
return
conf;
}
@Override
public
void setConf(Configuration arg0) {
this.conf = arg0;
}
@Override
public
int run(String[] arg0) throws Exception {
Job job = new Job(getConf());
job.setJobName("WordCountJob001");
job.setJarByClass(WordCount.class);
FileInputFormat.setInputPaths(job, new Path(arg0[0]));
FileOutputFormat.setOutputPath(job, new Path(arg0[1]));
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
return job.waitForCompletion(true) ? 0 : 1;
}
}
-
添加运行参数:
右击WordCount,run as->run configuration。添加如下参数:
如同先前一样,需要删除output文件夹:
刷新DFS Location
-
运行:
这回直接将WordCount Run as JavaApplication!
完成之后,刷新DFS,在output文件夹中查看结果。
相关推荐
Hadoop 环境搭建 Hadoop 环境搭建是大数据处理和分析的基础,涉及到虚拟机安装、操作系统安装、JDK 安装、SSH 无密码登录、Hadoop 安装等多个方面。在本文中,我们将详细介绍 Hadoop 环境搭建的步骤和方法。 一、...
Hadoop环境搭建主要包括配置Hadoop相关的配置文件,包括但不限于hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、masters和slaves文件。 在hadoop-env.sh文件中需要指定Java的安装路径,因为Hadoop...
在Windows上使用Cygwin作为类Unix支撑环境来安装Hadoop, 网上介绍的还是比较多的。...其实,Hadoop环境搭建的主要内容是Cygwin的安装,估计要占总时间的2/3, 其它工作我会手把手的教你,come on,follow me!
hadoop环境搭建和eclipse开发
Hadoop环境搭建.pdf Hadoop环境搭建.pdf Hadoop环境搭建.pdf
hadoop的环境搭建过程.方便第一次使用hadoop的同学.快速搭建环境
### Hadoop环境搭建详解 #### 一、引言 随着大数据技术的发展,Hadoop作为大数据处理的核心框架之一,其重要性不言而喻。对于初学者来说,掌握Hadoop的基本安装与配置流程是非常重要的第一步。本文旨在提供一份...
hadoop 环境搭建、机器部署以及 Linux 常用命令操作指南 本指南将指导用户从头开始搭建 Hadoop 环境,包括虚拟机环境的准备、Linux 基础知识、shell 增强大数据集群环境准备、ZooKeeper 介绍及集群操作网络编程等...
4. 配置Hadoop环境是关键步骤,主要涉及以下几个文件: - `hadoop-env.sh`: 这个文件用于设置Hadoop相关的环境变量,如`JAVA_HOME`,应确保指向正确的JDK安装路径,例如`/home/tools/jdk1.8.0_221`。 - `hdfs-...
Hadoop 环境搭建 - Linux(CentOS7)- 安装配置 JDK1.8 本文档主要介绍了在 CentOS7 环境下搭建 Hadoop 环境,包括安装配置 JDK1.8 的过程。下面是相关知识点的总结: 一、删除自带的 OpenJDK 在 CentOS7 中,...
"Hadoop环境搭建" Hadoop 环境搭建是大数据处理和分析的基础,涉及到虚拟机的安装、操作系统的选择、虚拟机的配置等多个方面。下面是 Hadoop 环境搭建的详细知识点: 一、虚拟机的安装 1.1 VMware 中新建虚拟机的...
"Hadoop 环境搭建 - Linux(CentOS7)- 安装配置 Scala 2.11.8" 本文主要讲述如何在 CentOS7 环境下搭建 Hadoop 环境,并安装配置 Scala 2.11.8。下面是相关知识点的总结: 1. Hadoop 环境搭建 在 CentOS7 环境下...
大数据-Hadoop环境搭建(单机) 本文档旨在指导读者搭建大数据Hadoop环境,基于CentOS 6.8操作系统,使用JDK 1.8和Hadoop 2.8.2版本。文档涵盖了服务器选择、相关配置、Hadoop环境安装、JDK环境配置、Hadoop环境配置...
本资源包含Hadoop环境搭建所需的关键组件,主要为Hadoop 2.7.2和Java Development Kit (JDK) 8u181的Linux版本。 1. **Hadoop 2.7.2**: 这是Hadoop的一个稳定版本,它支持HDFS(Hadoop Distributed File System)和...
### Hadoop环境搭建知识点 #### 一、Hadoop的重要性与基础知识 - **Hadoop的地位**:作为大数据处理领域的核心框架之一,Hadoop被广泛应用于数据存储与处理领域,特别是对于大规模数据集的数据处理方面有着不可替代...