当前位置:文档之家› Hadoop平台搭建指南

Hadoop平台搭建指南

Hadoop平台搭建指南
Hadoop平台搭建指南

Hadoop平台搭建

指南

学院:计算机科学与工程学院专业:计算机科学与技术

学生姓名:吕瑞

指导老师:蔡国永

目录

一.Hadoop简介 (3)

二.实验环境 (3)

硬件环境 (3)

软件环境 (4)

三.Hadoop平台搭建 (4)

1.安装必需软件 (4)

2.系统配置 (5)

3.hadoop配置 (6)

4.Hadoop格式化 (8)

5.启动/停止Hadoop (8)

四.配置eclipse开发环境 (10)

1.下载eclipse (10)

2.配置hadoop-eclipse开发环境 (10)

五. 新建hadoop项目 (12)

1.新建hadoop项目 (12)

2.加载hadoop软件包 (13)

六. 远程访问 (14)

1.网络设置(在校园网环境下) (14)

2.安装ssh服务器 (15)

3.远程访问 (15)

七. 实例分析 (17)

1.FPTree算法 (17)

2.运行FPTree算法 (17)

附FPTree算法在hadoop和单机上的实验数据错误!未定

义书签。

Hadoop平台搭建

一.Hadoop简介

Hadoop是由Apache软件基金会开发的一个基于分布式文件系统HDFS和并行编程模型Map/Reduce的大数据处理平台。其中,HDFS保证了大量数据的可靠存储和高效读写,Map/Reduce实现了数据的并行处理。它具有高可靠性,高容错性,高扩展性,高效性,高性价比等显著特点。

HDFS是一个分布式的文件系统,从功能上可以分为Namenode(主节点)和Datanode (从节点),Namenode节点主要负责文件系统元信息的管理和维护,Datanode负责文件数据的存储。通过采用数据冗余保证数据的可靠性,通过心跳机制实现Namenode和Datanode 的通信,通过数据文件的分布式存储实现数据的并发读写。

Map/Reduce是一个并行的计算模型,从功能上可以分为Jobtrack和tasktrack,Jobtrack 主要负责系统资源的分配和任务的管理调度,tasktrack主要负责任务的执行。Map/Reduce 的任务管理模式实现了“移动数据”向“移动计算”的转移,从而大大降低了数据传输中宝贵的带宽资源,提升了程序的执行效率,将数据请求和数据传输分裂开来大大减轻了namenode 节点的数据压力,实现数据访问者和数据存储方的直接通信和数据传输。

HDFS和Map/Reduce是Hadoop系统的核心,随着Hadoop平台的日渐成熟和应用越来越广泛,如今Hadoop已经形成了一个Hadoop Ecosystem,它涉及到分布式按列存储的数据库HBASE和数据仓库HIVE,数据集检索工具PIG,结构化和非结构化数据传输工具SQOOP,永久化序列化存储的系统A VRO,高可用性的协调服务ZooKeeper等。

二.实验环境

本文通过搭建一个Hadoop平台和运行一个简单程序演示Hadoop的使用方法。

硬件环境

硬件部分包括8台普通主机(作为datanode使用)和1台高配主机(作为namenode 使用),具体信息如下:

表1.平台硬件环境

名字操作系统IP地址CPU/内存

namenode0 Ubuntu 10.04 192.168.0.100 Xeon(R)2.0ghz/6g

datanode1 Ubuntu 10.04 192.168.0.101 I G645 2.9ghz/2g

datanode2 Ubuntu 10.04 192.168.0.102 I G645 2.9ghz/2g

datanode3 Ubuntu 10.04 192.168.0.103 I G645 2.9ghz/4g

datanode4 Ubuntu 10.04 192.168.0.104 I G645 2.9ghz/4g

datanode5 Ubuntu 10.04 192.168.0.105 I G645 2.9ghz/4g

datanode6 Ubuntu 10.04 192.168.0.106 I G645 2.9ghz/4g

datanode7 Ubuntu 10.04 192.168.0.107 I G645 2.9ghz/4g

datanode8 Ubuntu 10.04 192.168.0.108 I G645 2.9ghz/4g

注:在Hadoop部署的分布式文件系统中有4种角色:namenode,datanode,jobtracker,tasktracker。Namenode和Jobtracker属于Master角色,Datanode和Tasktracker属于

Slaver角色。Namenode和Datanode用于分布式存储,JobTracker和T asktracker用于分布式计算。

软件环境

操作系统:Linux Ubuntu 10.0.4

JAVA运行环境:Jdk 1.7.0

其他软件:

Hadoop版本:Haoop 1.0.4

安全协议:SSH

开发工具:eclipse(版本Juno Service Release 2)

三.Hadoop平台搭建

1.安装必需软件

(1)下载并安装jdk1.7.0

下载地址:

https://www.doczj.com/doc/741491920.html,/technetwork/java/javase/downloads/jdk7-downloads-1880260. html

(2)设置环境变量:

1)输入命名:

$ sudo gedit /etc/profile

2)在文档最后umask 022前写入下面三行内容:

###JA V A

export JA V A_HOME=/home/hadoop/jdk1.7.0

export PATH=$JA V A_HOME/bin:$PATH

(3)测试

在终端中输入命令:

$java -version

终端如果返回以下信息:

图1-1.Java版本信息

则说明jdk已经安装好了。

(4)安装安全协议SSH

SSH是实现主节点对从节点的免密码登录,实现对从节点的启动,停止等控制在终端中输入命令:

$ sudo apt-get install ssh

根据系统提示,回车即可

注:在每个节点上都要执行以上(1)(2)相同的过程。

2.系统配置

(1)修改主机名(以修改admin为namenode0为例)

1)在终端中输入命令:

hadoop@admin:~$ sudo gedit /etc/hostname

在打开的文件中写入要修改为的主机名(如namenode0):

namenode0

2)保存文件退出,命令行变为: hadoop@namenode0:/hadoop$

注:此步骤意在为每台主机提供一个容易理解和管理的名字,名字名称任意,本实验中数据节点分别命名为datanode【1-8】和名字节点namenode0;

(2)修改hosts文件

1)在终端中输入命令:

hadoop@namenode0:~$ sudo gedit /etc/hosts

将集群中的对写入hosts文件:

2)保存文件退出

注:1)此步骤为了实现用主机名可以直接访问相应的主机

2)以上步骤(1)(2)需要在每台主机上进行相同操作

(3)配置ssh

Hadoop启动以后,Namenode通过SSH来启动和停止各个节点上的各种守护进程,需要在节点之间执行指令的时候是不输入密码,所以需要用无密码公钥认证的方式配置SSH。本实验中以namenode0为主节点,它要通过SSH连接到所有其它datanode节点(datanode1, datanode2,datanode3.。。。。)。对于SSH服务来说,namenode是客户端,datanode是服务端。

1)在主目录下创建.ssh文件夹,然后生成公钥和私钥:

进入隐藏文件.ssh:

$cd .ssh

$hadoop@namenode0:~/.ssh$ ssh-keygen -t rsa

#该命令在namendoe0上生成一个私钥和一个公钥。公钥放到服务端(datanode)去,私钥留在客户端(namenode0)。

2)将公钥写入authorized_keys文件中

hadoop@namenode0:~/.ssh$ cp id_rsa.pub authorized_keys

3)将uthorized_keys文件复制到网络中所有datanode节点的.ssh目录下

hadoop@namenode0:~/.ssh$ scp authorized_keys datanode1:/home/hadoop/.ssh/

4)测试ssh

hadoop@namenode0:~/.ssh$ ssh datanode1

图1-2.ssh测试

该图说明ssh已经正确配置好了,不需要输入密码。

(4)目录结构

Hadoop要求所有结点上Hadoop的目录结构要相同,因此必须在每个系统中创建一个相同的用户名的账户。本实验配置中都采用了hadoop账户,主目录是/home/hadoo p

Hadoop存放的目录为:/home/hadoop/Hadoop-1.0.4

3.hadoop配置

(1)下载hadoop-1.0.4

将下载的文件解压到/home/hadoop/目录下

下载地址:

https://www.doczj.com/doc/741491920.html,/releases.html#12+October%2C+2012%3A+Release+1.0.4+a vailable

在终端中输入命令:

$ sudo tar zxvf hadoop-1.0.4.tar.gz

(2)配置环境变量,

1)修改hadoop-env.sh

$ cd hadoop-1.0.4

$sudo gedit ./conf/hadoop-env.sh

export JA V A_HOME=/home/hadoop/jdk1.7.0

2)修改profile

$sudo gedit /etc/profile

在文件末尾umask 022前添加

###Hadoop

export HADOOP_HOME=/home/hadoop/hadoop-1.0.4

export PATH=$HADOOP_HOME/bin:$PATH

export HADOOP_HOME_WARN_SUPPRESS=1

(3)配置mapred-site.xml

在终端中输入命令,打开文件写入下面内容:

$sudo gedi ./conf/mapred-site.xml

mapred.job.tracker

http://192.168.0.100:9001

mapred.reduce.tasks

3

(4)配置core-site.xml

在终端中输入命令,打开文件写入下面内容:

$sudo gedit ./conf/core-site.xml

hadoop.tmp.dir

/home/hadoop/tmp

A base for other temporary directories.

https://www.doczj.com/doc/741491920.html,

hdfs://192.168.0.100:9000

(5)hdfs-site.xml

在终端中输入命令,打开文件写入下面内容:

$sudo gedit ./conf/hdfs-site.xml

dfs.replication

3

(6)配置编辑conf/masters ,conf/slaves

1)定义HDFS主节点,本实验中为namenode0,如:在打开的文件中写入:

在终端中输入命令,打开文件写入下面内容:

$ sudo gedit ./conf/masters

Namenode0

2)定义HDFS从节点,本实验中为datanode[1-8],如:在打开的文件中写入:在终端中输入命令,打开文件写入下面内容:

$ sudo gedit ./conf/slaves

datanode1

datanode2

datanode3

datanode4

datanode5

datanode6

datanode7

datanode8

注:以上1-5步骤须在每个节点上执行或者将配置好的hadoop-1.0.4文件夹复制到各个节点上并在每个节点上添加步骤(1)中的环境变量

4.Hadoop格式化

在主节点(namenode)上HDFS格式化

在终端中输入命令:

hadoop@namenode0:~/hadoop-1.0.4$bin/hadoop namenode -format

图1-3格式化HDFS

5.启动/停止Hadoop

(1)启动hadoop

在终端中输入命令:

$ bin/start-all.sh

图https://www.doczj.com/doc/741491920.html,node启动界面

检测是否启动成功:

输入命令:jps,如下图列出4个正在运行的进程,则hadoop启动成功

图1-5验证hadoop启动成功

(2)停止hadoop

在终端中输入命令:

$ stop-all.sh

图1-6.Hadoop停止过程

四.配置eclipse开发环境

1.下载eclipse

1),下载linux环境下的eclipse编译器,解压到用户名目录下(/home/hadoop/):

2),下载hadoop eclipse插件:hadoop-eclipse-plugin-1.0.4.jar

2.配置hadoop-eclipse开发环境

1)将下载的插件添加到eclipse/plugins/目录下

2)打开eclipse菜单栏的首选项,并选中hadoop的安装目录后点击确定

3)菜单栏中窗口----打开透视图-----Map/Reduce;如图

4)在显示的视图中编Myloc

5)点击右键,填入相应内容

6)接着点击"Advanced parameters"从中找到"hadoop.tmp.dir",修改为Hadoop集群中设置的地址,本实验中是"/home/hadoop/tmp",这个参数在"core-site.xml"进行了配置。

7)至此,eclipse开发环境配置完成,启动hadoop,测试hadoop与eclipse的链接。选择窗口-显示视图-项目资源管理器,出现如下Myloc文件目录树即为链接成功:

五. 新建hadoop项目

1.新建hadoop项目

1)选择文件-新建-项目:

2)选择Map/Reduce Project,下一步:

3)输入项目名称,点击完成。

2.加载hadoop软件包

1)在文件中右击构建路径,配置构建路径,将hadoop目录中的*.jar文件全部加

载到项目中,如图:

点击添加外部jAR(X)选中jar文件,完成加载,如图

至此,完成了一个项目的创建。

六. 远程访问

1.网络设置(在校园网环境下)

1)配置hadoop集群的网络参数IP地址,子网掩码,网关,DNS,如下图

WLAN端口,如下图

2.安装ssh服务器

在namenode节点终端上输入以下命令:

$sudo apt-get install openssh-server

3.远程访问

1)安装客户端软件winscp(或者putty),并登录

登录成功可进行文件上传,提交程序,查看运行过程和分析结果。2)通过浏览器查看作业执行信息

在浏览其中输入http://namenodeIP:63414查看HDFS信息

在浏览其中输入http://namenodeIP:63415查看作业执行情况

七. 实例分析

1.FPTree算法

(1)简介:

在关联规则挖掘领域最经典的算法是Apriori,其致命的缺点是需要多次扫描事务数据库。于是人们提出了各种裁剪(prune)数据集的方法以减少I/O开支,韩嘉炜老师的FP-Tree算法就是其中非常高效的一种。本实例实现了在hadoop环境下的FP-Tree算法

(2)涉及到的文件

注:DC_FPTree.java:构建事务树,求解频繁集

Record.java:定义事务集数据结构

TreeNode.java:定义树节点数据结构

(3)输入输出文件

输入文件(12.2M):(部分)

输出文件(1.1k):(部分)

2.运行FPTree算法

(1)在eclipse下运行FPTree算法

1)$start-all.sh 启动hadoop集群

2)打开eclipse编辑器,菜单----运行方式------hadoop运行

运行过程如下

13/08/13 14:22:46 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

13/08/13 14:22:46 WARN mapred.JobClient: No job jar file set. User classes may not be found. See JobConf(Class) or JobConf#setJar(String).

13/08/13 14:22:46 INFO input.FileInputFormat: Total input paths to process : 1

13/08/13 14:22:46 WARN snappy.LoadSnappy: Snappy native library not loaded

13/08/13 14:22:47 INFO mapred.JobClient: Running job: job_local_0001

13/08/13 14:22:47 INFO util.ProcessTree: setsid exited with exit code 0

13/08/13 14:22:47 INFO mapred.Task: Using ResourceCalculatorPlugin :

org.apache.hadoop.util.LinuxResourceCalculatorPlugin@5890bd

13/08/13 14:22:47 INFO mapred.MapTask: io.sort.mb = 100

13/08/13 14:22:49 INFO mapred.JobClient: map 0% reduce 0%

13/08/13 14:22:49 INFO mapred.MapTask: data buffer = 79691776/99614720

13/08/13 14:22:49 INFO mapred.MapTask: record buffer = 262144/327680

13/08/13 14:22:51 INFO mapred.MapTask: Spilling map output: record full = true

13/08/13 14:22:51 INFO mapred.MapTask: bufstart = 0; bufend = 5417647; bufvoid = 99614720

13/08/13 14:22:51 INFO mapred.MapTask: kvstart = 0; kvend = 262144; length = 327680

13/08/13 14:22:51 INFO mapred.MapTask: Finished spill 0

13/08/13 14:22:52 INFO mapred.MapTask: Spilling map output: record full = true 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

13/08/13 14:24:25 INFO mapred.JobClient: map 100% reduce 0%

13/08/13 14:24:27 INFO mapred.LocalJobRunner: reduce > reduce

13/08/13 14:24:27 INFO mapred.Task: Task 'attempt_local_0002_r_000000_0' done.

13/08/13 14:24:28 INFO mapred.JobClient: map 100% reduce 100%

13/08/13 14:24:28 INFO mapred.JobClient: Job complete: job_local_0002

13/08/13 14:24:28 INFO mapred.JobClient: Counters: 20

13/08/13 14:24:28 INFO mapred.JobClient: File Output Format Counters

13/08/13 14:24:28 INFO mapred.JobClient: Bytes Written=1131

13/08/13 14:24:28 INFO mapred.JobClient: FileSystemCounters

13/08/13 14:24:28 INFO mapred.JobClient: FILE_BYTES_READ=269634746

13/08/13 14:24:28 INFO mapred.JobClient: FILE_BYTES_WRITTEN=218593881

13/08/13 14:24:28 INFO mapred.JobClient: File Input Format Counters

13/08/13 14:24:28 INFO mapred.JobClient: Bytes Read=1418

13/08/13 14:24:28 INFO mapred.JobClient: Map-Reduce Framework

13/08/13 14:24:28 INFO mapred.JobClient: Map output materialized bytes=1404

13/08/13 14:24:28 INFO mapred.JobClient: Map input records=64

13/08/13 14:24:28 INFO mapred.JobClient: Reduce shuffle bytes=0

13/08/13 14:24:28 INFO mapred.JobClient: Spilled Records=128

13/08/13 14:24:28 INFO mapred.JobClient: Map output bytes=1270

13/08/13 14:24:28 INFO mapred.JobClient: Total committed heap usage (bytes)=947912704 13/08/13 14:24:28 INFO mapred.JobClient: CPU time spent (ms)=0

13/08/13 14:24:28 INFO mapred.JobClient: SPLIT_RAW_BYTES=113

13/08/13 14:24:28 INFO mapred.JobClient: Combine input records=0

13/08/13 14:24:28 INFO mapred.JobClient: Reduce input records=64

13/08/13 14:24:28 INFO mapred.JobClient: Reduce input groups=50

13/08/13 14:24:28 INFO mapred.JobClient: Combine output records=0

13/08/13 14:24:28 INFO mapred.JobClient: Physical memory (bytes) snapshot=0

13/08/13 14:24:28 INFO mapred.JobClient: Reduce output records=50

13/08/13 14:24:28 INFO mapred.JobClient: Virtual memory (bytes) snapshot=0

13/08/13 14:24:28 INFO mapred.JobClient: Map output records=64

注:本程序分别运行了一个12M的文件和一个24M的文件,运行正常

(2)以终端方式运行FPTree算法

1):程序打包

选中PageRank包,右击导出,选择jar文件,

点击下一步,选中要打包文件

下一步,选择主类,点击完成。

2):执行程序

在命令行下输入命令:

hadoop@namenode0:~/hadoop-1.0.4$ bin/hadoop jar fptree.jar FPTree.DC_FPTree

注:结果和在eclipse下运行结果相同

相关主题
文本预览
相关文档 最新文档