hadoop是一个能够对大量数据进行分布式处理的软件框架。它实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

这里是一些公司使用hadoop的情况,POwerByWIki  :http://wiki.apache.org/hadoop/PoweredBy,可以看到目前hadoop在世界范围内的的使用情况。

对这个东西的介绍也就不再多说,并且关于他的一个架构大家可以google去查询(主从关系Master-Slaves),我更多的是想通过hadoop这个并行框架学习如何去写mapreduce,所以就今天这里只说说一开始如何安装并配置hadoop,并且最后利用《hadoop实战》上的一个简单的wordcount来测试我们的hadoop是否搭建成功。(当然hadoop本身适用于集群的数据处理工作,但是这里我只是学习下简单的mapreduce,所以可以将它配置为一个伪分布式的模式,只在本机上运行就ok!)

[环境说明]:

Ubuntu12.10 +hadoop-0.23.9+openjdk1.7.0

[Start]:

首先我们需要一个hadoop的releases版本,可以从这个链接下载:http://mirrors.cnnic.cn/apache/hadoop/common/

然后

tar -xzf hadoop-0.23.9.tar.gz
sudo mv hadoop-0.23.9 /usr/local/ (目录自己设定,后面的配置文件目录要保持一致)
cd /usr/local/
sudo ln -s hadoop-0.23.9/ hadoop

完成后需要安装我们的java jdk了,可以直接sudo apt-get install openjdk-7-jre

安装完后可以看看java的版本 : java -version

[Step 2]:

安装ssh-server,ubuntu默认只会安装ssh的client,你的机子如果每安装过ssl-server端,别人是没办法ssh你的机子。

sudo apt-get install openssh-server或是 sudo apt-get install ssh

然后配置本机无密钥登录,

ssh-keygen -t rsa -P ""

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

可以检测下是否成功,即登录自己的自己,with command : ssh localhost

[Step 3]:

当然我么需要为hadoop自己建立一个用户组,这样是为了以后的事物处理,在这个用户组下在建立一个hadoop用户,当然master管辖 下的一个slave,在集群上,就会有许多的用户了,相当于Mul-slave。

创建hadoop用户组:

sudo addgroup hadoop

创建hadoop用户:

sudo adduser -ingroup hadoop hadoop

    给hadoop这个用户设置权限,编辑/etc/sudoers文件,给hadoop用户赋予root用户同样的权限,

在root   ALL=(ALL:ALL)   ALL下添加 hadoop   ALL=(ALL:ALL)  ALL,

[Step 4]:

在这一步,我们就开始配置我们的hadoop的配置:

chown  -R hadoop:hadoop /usr/local/hadoop
    chown  -R hadoop:hadoop /usr/local/hadoop-0.23.9

切换用户:su hadoop

1. 配置jdk及hadoop环境变量

编辑 sudo vim /etc/profile ,添加以下配置信息:

#java environment
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#hadoop environment
export HADOOP_PREFIX=/usr/local/hadoop-0.23.9
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export YARN_HOME=${HADOOP_PREFIX}
export HADOOP_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop

2.hadoop 文件配置

hadoop@szm-Lenovo:~$ cd /usr/local/hadoop/etc/hadoop/

hadoop@szm-Lenovo:/usr/local/hadoop/etc/hadoop$ vim yarn-env.sh

添加配置信息:

export HADOOP_FREFIX=/usr/local/hadoop
export HADOOP_COMMON_HOME=${HADOOP_FREFIX}
export HADOOP_HDFS_HOME=${HADOOP_FREFIX}
export PATH=$PATH:$HADOOP_FREFIX/bin
export PATH=$PATH:$HADOOP_FREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_FREFIX}
export YARN_HOME=${HADOOP_FREFIX}
export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_FREFIX}/etc/hadoop

之后就需要配置hadoop的运行配置文件:
 hadoop@szm-Lenovo:/usr/local/hadoop/etc/hadoop$ vim core-site.xml

配置为:

<configuration>
<property> <name>fs.defaultFS</name> <value>hdfs://localhost:12200</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/hadoop-root</value> </property> <property> <name>fs.arionfs.impl</name> <value>org.apache.hadoop.fs.pvfs2.Pvfs2FileSystem</value> <description>The FileSystem for arionfs.</description> </property>
</configuration>

hadoop@szm-Lenovo:/usr/local/hadoop/etc/hadoop$ vim hdfs-site.xml

<configuration>
<property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/data/dfs/name</value> <final>true</final> </property> <property> <name>dfs.namenode.data.dir</name> <value>file:/usr/local/hadoop/data/dfs/data</value> <final>true</final> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.permission</name> <value>false</value> </property>
</configuration>

hadoop@szm-Lenovo:/usr/local/hadoop/etc/hadoop$ vim mapred-site.xml  (原来存在的是有后缀为.template的文件,改掉)

<configuration>
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.job.tracker</name> <value>hdfs://localhost:9001</value> <final>true</final> </property> <property> <name>mapreduce.map.memory.mb</name> <value>1536</value> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx1024M</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>3072</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx2560M</value> </property> <property> <name>mapreduce.task.io.sort.mb</name> <value>512</value> </property>
<property> <name>mapreduce.task.io.sort.factor</name> <value>100</value> </property> <property> <name>mapreduce.reduce.shuffle.parallelcopies</name> <value>50</value> </property> <property> <name>mapreduce.system.dir</name> <value>file:/usr/local/hadoop/data/mapred/system</value> </property> <property> <name>mapreduce.local.dir</name> <value>file:/usr/local/hadoop/data/mapred/local</value> <final>true</final> </property>
</configuration>

hadoop@szm-Lenovo:/usr/local/hadoop/etc/hadoop$ vim yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce.shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>user.name</name> <value>hadoop</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>localhost:54311</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>localhost:54312</value> </property>
<property> <name>yarn.resourcemanager.webapp.address</name> <value>localhost:54313</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>localhost:54314</value> </property> <property> <name>yarn.web-proxy.address</name> <value>localhost:54315</value> </property> <property> <name>mapred.job.tracker</name> <value>localhost</value> </property>
</configuration>

编辑完成后就差不多将hadoop的配置信息改完了,其中的localhost因为是运行在本机的伪分布式,当然可以根据实际的集群关系该为该宿主机的信息

[Step 5]:

测试我们的hadoop是否运行,

hadoop@szm-Lenovo:~$ cd /usr/local/hadoop/sbin/

hadoop@szm-Lenovo:/usr/local/hadoop/sbin$ ./start-dfs.sh

Starting namenodes on [localhost]
localhost: starting namenode, logging to /usr/local/hadoop-0.23.9/logs/hadoop-hadoop-namenode-szm-Lenovo.out
localhost: starting datanode, logging to /usr/local/hadoop-0.23.9/logs/hadoop-hadoop-datanode-szm-Lenovo.out
Starting secondary namenodes [3dns-2.adobe.com]
3dns-2.adobe.com: starting secondarynamenode, logging to /usr/local/hadoop-0.23.9/logs/hadoop-hadoop-secondarynamenode-szm-Lenovo.out

hadoop@szm-Lenovo:/usr/local/hadoop/sbin$ ./start-yarn.sh

hadoop@szm-Lenovo:/usr/local/hadoop/sbin$ ./start-yarn.sh 
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop-0.23.9/logs/yarn-hadoop-resourcemanager-szm-Lenovo.out
localhost: starting nodemanager, logging to /usr/local/hadoop-0.23.9/logs/yarn-hadoop-nodemanager-szm-Lenovo.out

可以用java的Jps命令查看hadoop是否成功运行:

hadoop@szm-Lenovo:/usr/local/hadoop/sbin$ jps

1200 Jps

27288 NameNode

32150 ResourceManager

28138 SecondaryNameNode

32375 NodeManager

27668 DataNode

如果显示为上面的信息,则证明hadoop正常运行,上面的几个进程namenode是集群上的宿主节点信息,然后还有mapreduce对应的任务检测进程,可以查看集群节点的任务提交情况,然后处理。(我也是刚开始看,架构还不是很懂)

[STep 6 ]:

成功后我们就可以测试下第一个mapreduce程序,利用它自带的一个wordcount例子来运行下,

在一个目录下建立文件:hadoop@szm-Lenovo:~/jkl$ touch test.txt

编辑文件内容为:hadoop@szm-Lenovo:~/jkl$ cat test.txt 
a s d f g h j k l p o i u y t r e w q z x c v b n m s d f a g h y t c v g f d s

在hadoop的hdfs文件系统建立一个文件夹

hadoop@szm-Lenovo:~/jkl$ hadoop fs -mkdir /test

提交test.txt

hadoop@szm-Lenovo:~/jkl$ hadoop fs -copyFromLocal test.txt /test

产看提交信息:

hadoop@szm-Lenovo:~/jkl$ hadoop fs -ls /test

Found 1 items
-rw-r--r--   1 hadoop supergroup         80 2013-10-10 16:29 /test/test.txt

然后运行wordcount:

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-0.23.9.jar wordcount /test/test.txt  /test/out

查看结果信息:

hadoop@szm-Lenovo:~/jkl$ hadoop fs -ls /test/out
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2013-10-10 16:32 /test/out/_SUCCESS
-rw-r--r--   1 hadoop supergroup        104 2013-10-10 16:32 /test/out/part-r-00000

查看单词统计结果:

hadoop@szm-Lenovo:~/jkl$ hadoop fs -cat /test/out/part-r-00000

a       2
b 1
c 2
d 3
e 1
f 3
g 3
h 2
i 1
j 1
k 1
l 1
m 1
n 1
o 1
p 1
q 1
r 1
s 3
t 2
u 1
v 2
w 1
x 1
y 2
z 1

运行结果就是上面的样子,一个整体的体验流程就是这样,然后我们需要现在单机上学习如何写我们的mapreduce程序。若是想拓展当然可以搞一个真正的集群,可惜,现在没有硬件设备。就是自己的PC。好了,就到这里,手酸了。

hadoop-0.23.9安装以及第一个mapreduce测试程序的更多相关文章

  1. Java和eclipxe的安装以及第一个程序

    首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 注意事项:安装 ...

  2. redis-desktop-manager 0.9.3 安装(最后一个免费版本)

    使用Chocolatey(Windows包管理工具)安装 官方安装说明 https://chocolatey.org/install 安装redis-desktop-manager 官方安装说明 ht ...

  3. HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo

    26 集群使用初步 HDFS的设计思路 l 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: l 在大数据系统中作用: 为各类分布式 ...

  4. 【hadoop之翊】——基于CentOS的hadoop2.4.0伪分布安装配置

    今天总算是把hadoop2.4的整个开发环境弄好了,包括 windows7上eclipse连接hadoop,eclipse的配置和測试弄得烦躁的一逗比了~ 先上一张成功的图片,hadoop的伪分布式安 ...

  5. hadoop 2.2.0集群安装

    相关阅读: hbase 0.98.1集群安装 本文将基于hadoop 2.2.0解说其在linux集群上的安装方法,并对一些重要的设置项进行解释,本文原文链接:http://blog.csdn.net ...

  6. hadoop 0.20.2伪分布式安装详解

    adoop 0.20.2伪分布式安装详解 hadoop有三种运行模式: 伪分布式不需要安装虚拟机,在同一台机器上同时启动5个进程,模拟分布式. 完全分布式至少有3个节点,其中一个做master,运行名 ...

  7. hadoop 2.2.0集群安装详细步骤(简单配置,无HA)

    安装环境操作系统:CentOS 6.5 i586(32位)java环境:JDK 1.7.0.51hadoop版本:社区版本2.2.0,hadoop-2.2.0.tar.gz 安装准备设置集群的host ...

  8. SmartIDE v1.0.23 一个非常不敏捷的发布

    SmartIDE v1.0版本(CLI Build v1.0.23.4650,Server Build v1.0.23.4646)已经发布,在超过4000 个 Builds 之后,我们终于发布了v1. ...

  9. [视频解说]Java(JDK的下载安装及第一个程序执行)

    (JDK的下载安装及第一个程序执行) 内容:Java JDK 的安装以及HelloWorld 程序的执行 欢迎童鞋们前往围观 http://v.youku.com/v_show/id_XODA3Mzk ...

随机推荐

  1. iOS 开发之粒子效果

    本文由糖炒小虾.Benna翻译 ,校对:sai.u0u0.iven.子龙山人 iOS 5中的UIKit粒子系统教程 Ray的话:这是第15篇.也是最后一篇<iOS 5 盛宴>中的iOS 5 ...

  2. APACHE 403 FORBIDDEN错误的解决办法之一

    打开 apache的配置文件httpd.conf,找到这段代码: Options FollowSymLinksAllowOverride NoneOrder deny,allowDeny from a ...

  3. iOS常见问题(4)

    一.非ARC内存管理问题. 有些同学在创建项目的时候忘记点ARC了,导致一些成员属性都莫名其妙的释放了.然后出现了一系列莫名其妙的错误. 在滚动UITableView的时候出现野指针错误. 一出现这些 ...

  4. android studio 突然出现Gradle project sync failed 错误

    出现: 之前还是好好的,突然就出现Gradle project sync failed  错误,网上原因可能是工具的问题. 解决办法: 重新打开android studio就好了.不知道大家还有其他的 ...

  5. android开发 更新升级安装到一半自动闪退

    如题:android开发 更新升级安装到一半自动闪退,,,解决办法,如下(红色为我新增的代码) /**     * 安装APK文件     */    private void installApk( ...

  6. Ado.Net实现简易(省、市、县)三级联动查询,还附加Access数据

    小弟在博客园驻园不久,初来咋到:将最近写的小程序附上,希望各位大牛们吐槽:激发对程序员围观的童鞋们,赶紧加入IT行业,如果你在上海那简称就是SHIT,哈哈题外话,以下开始切入正题: 坐公交车是旁边偶遇 ...

  7. 设置google搜索打开链接时在新标签页显示

    百度的搜索结果,打开链接都会在新的页面打开,但是google却直接在本页面打开,有时候我们打开的不一定是自己想要结果,又习惯性的把当前页面给关掉了......这只是习惯问题,可能国人有这个习惯.怎么设 ...

  8. tomcat内存溢出,设置

    tomcat/bin/catalina.bat里找到echo Using CATALINA_BASE:   "%CATALINA_BASE%" ,在上方设置:    set JAV ...

  9. SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束。

    SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束.

  10. 查看系统网络连接打开端口、系统进程、DOS打开文件

    问题描述: DOS查看系统网络连接打开端口.打开的服务 问题解决: (1)DOS查看系统网络连接打开端口 注: 使用    netstat 命令,可以查看系统打开的端口 (2)查看和关闭系统打开进程 ...