Hadoop上路-01_Hadoop2.3.0的分布式集群搭建
一。配置虚拟机软件
下载地址:https://www.virtualbox.org/wiki/downloads

1.虚拟机软件设定
1)进入全集设定

2)常规设定

2.Linux安装配置
1)名称类型
名称最后具有说明意义。版本根据个人情况。

2)内存
在下物理机系统Win7x64,处理器i53210,内存8G。

3)磁盘选择

4)磁盘文件
virtualbox格式vdi,VMWare格式vmdk,微软格式vhd(virtualbox不支持),Parallels格式hdd(virtualbox不支持)。
vdi转vmdk:VBoxManage.exe clonehd 原镜像.vmdk 目标镜像.vdi --format VDI
vdi转vhd: VBoxManage.exe clonehd 原镜像.vdi 目标镜像.vmdk --format VMDK
vmdk转vhd:VBoxManage.exe clonehd 原镜像.vdi 目标镜像.vhd --format VHD

5)磁盘空间
根据个人物理机配置,固定大小运行更快。

6)磁盘位置

7)数据传输
共享粘贴板和鼠标拖放的实现还需要系统安装结束后安装增强功能。

8)软驱
去除勾选。

9)Linux镜像

10)网络
去除勾选,安装过程中禁用网络。

二。安装模板Linux
1.一般安装过程






2.初始化用户
注意:不要使用“自动登录”。在下使用的是Ubuntu10.10,曾经这一步选择自动登录,给后续工作造成了很大麻烦。此时的用户名最好是一个通用的名称,因为后续会涉及SSH登录。



三。配置Linux
1.在桌面显示终端
便于使用命令行。

2.在桌面显示“我的电脑”

注意类型为“位置”。

3.安装增强功能
实现和物理机的粘贴板共享、鼠标拖放。







现在有很多视图模式可以使用:

4.初始化root用户

当前用户涉及集群配置的几个重要信息:

5.关闭防火墙
为了避免不必要的麻烦,在学习中建议关闭防火墙,这一步如果有修改,需重启系统:

四。准备资源
威格灵博客:www.cuiweiyou.com
0.下载
OpenSSH:http://archive.ubuntu.com/ubuntu/pool/main/o/openssh/
http://mirrors.oschina.net/ubuntu/pool/main/o/openssh/
这里不要下载太新的版本,以为你的Linux可能缺少其依赖。
JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
Hadoop:http://www.apache.org/dyn/closer.cgi/hadoop/common/


1.安装SSH
1)openssh-client
SHELL$ sudo dpkg -i openssh-client_5.3p1-3ubuntu3_i386.deb

2)openssh-server
SHELL$ sudo dpkg -i openssh-server_5.3p1-3ubuntu3_i386.deb

3)ssh-all
SHELL$ sudo dpkg -i sudo dpkg -i ssh_5.3p1-3ubuntu3_all.deb

4)ssh-keygen
在我们的学习环境中没有必要使用密码,所以创建密钥时留空,直接回车。
当然从这一步到6)可以先放弃,因为后续我们还需要单独在每台主机上操作。
SHELL$ ssh-keygen

5)authorized_keys
创建自动密码验证文件。如果使用cat命令,一个>为覆盖写入,另个为追加写入。还可以使用cp命令。
SHELL$ sudo cat id_rsa.pub > authorized_keys
SHELL$ sudo cat id_rsa.pub >> authorized_keys
SHELL$ sudo cp id_rsa.pub authorized_keys

6)ssh localhost
登录测试,初次登录会让用户确认:

2.安装JDK
因为在下的jdk是gz格式,所以首先需要解压。解压后移动到合适的目录,注意不要用当前用户的工作目录,这是为了简化后续工作。
解压:SHELL$ sudo tar -zxvf jdk-7u51-linux-i586.gz
移动:SHELL$ sudo mv jdk1.7.0_51 /home
1)环境变量
SHELL$ sudo gedit /etc/profile

2)重载环境变量,测试

3.安装Hadoop
同样,为了简化后续工作解压后移动到合适的目录。
解压:SHELL$ sudo tar -zxvf hadoop-2.3.0.tar.gz
移动:SHELL$ sudo mv hadoop-2.3.0 /home
配置环境变量:在环境变量加入hadoop的sbin目录并重载。

五。分布式集群搭建
1.增加虚拟系统
1)复制出一定数量的虚拟系统文件

2)修改UUID
%virtualbox% CMD> VBoxManage internalcommands sethduuid 虚拟系统文件.vmdk
3)导入系统
依照上文创建虚拟系统,到配置硬盘文件这一步:

先打开工作目录,发现虚拟系统文件夹已经创建,将复制出的系统文件放入:

然后使用已有的虚拟硬盘文件:

这样,每个虚拟系统的全部信息都保存在同一个文件夹了。
也可以使用VirtualBox的系统复制功能:



2.集群预设
7个系统要按照下表一一配置:
|
主机名 |
角色 |
登录用户 |
hostname |
hosts |
IP |
网关 |
|
hapmaster |
主控 master |
hadoop (全部7个主机的用户都是同样的) |
hapmaster |
127.0.0.1 localhost 192.168.1.240 hapmaster 192.168.1.241 hapslave1 192.168.1.242 hapslave2 192.168.1.243 hapslave3 192.168.1.244 hapslave4 192.168.1.245 hapslave5 192.168.1.246 hapslave6 |
192.168.1.240 |
192.168.1.1 |
|
hapslave1 |
附属 slave |
hadoop |
hapslave1 |
127.0.0.1 localhost ... |
192.168.1.241 |
192.168.1.1 |
|
hapslave2 |
附属 slave |
hadoop |
hapslave2 |
127.0.0.1 localhost ... |
192.168.1.242 |
192.168.1.1 |
|
hapslave3 |
附属 slave |
hadoop |
hapslave3 |
127.0.0.1 localhost ... |
192.168.1.243 |
192.168.1.1 |
|
hapslave4 |
附属 slave |
hadoop |
hapslave4 |
127.0.0.1 localhost ... |
192.168.1.244 |
192.168.1.1 |
|
hapslave5 |
附属 slave |
hadoop |
hapslave5 |
127.0.0.1 localhost ... |
192.168.1.245 |
192.168.1.1 |
|
hapslave6 |
附属 slave |
hadoop |
hapslave6 |
127.0.0.1 localhost ... |
192.168.1.246 |
192.168.1.1 |
威格灵博客:www.cuiweiyou.com
下面就开始对7个系统分别进行配置,本文档记录以从属机hapslave1为例:
首先我们启动虚拟系统,直接使用root用户登录:

1)修改用户名
创建模板系统时我们已经初始化了root用户,所以,以后在学习环境中完全可以一直使用root用户。另外,如果你在安装ubuntu时初始化用户为“hadoop”,这一步和2)就可以跳过了。
(1)在root下修改登录用户名
SHELL$ chfn -f 新登录名 原登录名

(2)使用root修改用户
SHELL$ usermod -l 新登录名 -d /home/新登录名 -m 原登录名

2)配置hostname
如果这一步使用的用户是非root,在命令前要加sudo 。建议继续在root下修改。主控机hapmaster也不需要此步骤。
SHELL$ sudo gedit /etc/hostname

3)配置hosts
无论主控机还是从属机,现在开始都需要单独配置。注意每次重启系统后一定要确认一下。
SHELL$ sudo gedit /etc/hosts

127.0.0.1 localhost
192.168.1.240 hapmaster
192.168.1.241 hapslave1
192.168.1.242 hapslave2
192.168.1.243 hapslave3
192.168.1.244 hapslave4
192.168.1.245 hapslave5
192.168.1.246 hapslave6
注意:配置hostname和hosts后需重启系统。可以在4)、5)步骤都结束后最终重启系统。或者执行:
SHELL$ sudo /etc/init.d/networking restart
4)配置网卡静态IP
首先查看网卡名称
SHELL$ ifconfig

然后配置这个网卡:
SHELL$ sudo gedit /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.1.24*
gateway 192.168.1.1
netmask 255.255.255.0
这一步,如果只看到一个“lo”,一定要检查虚拟系统的网络配置是否开启。

配置interfaces后重启网卡:
SHELL$ sudo /etc/init.d/networking restart

5)赋予用户对hadoop安装目录可写的权限
SHELL$ sudo chown -hR 用户 hadoop根目录

3.集群的SSH配置
首先,把全部虚拟主机的网络都配置为桥接,以组成一个局域网。

然后逐个启动系统。都启动后最好使用ping命令测试是否能够互相通讯。
在创建模板系统时,已经在hapmaster主机创建了authorized_keys密钥文件,并且拷贝出的6个从属系统上也都有这个文件。
现在把7台主机上面的authorized_keys、id_rsa、id_rsa.pub三个文件都删掉。这三个文件在/home/用户名/.ssh/目录里。
下面使用hapmaster主机开始操作:
1)生成新的id_rsa和id_rsa.pub文件
2)将hapmaster的authorized_keys文件发给hapslave1主机
注意:远程用户要对远程主机上指定的目录有足够权限。
SHELL$ scp 文件 远程用户@远程主机:目录
3)为hapslave1新建id_rsa.pub并追加到authorized_keys文件
SHELL$ cat 源文件 目标文件

如果在执行追加时提示“bash: authorized_keys: 权限不够”,可以使用chown命令给当前用户添加操作.ssh目录的权限。
4)依次将全部主机的空密码加入到同一个authorized_keys文件
每个主机都获取了保存有7个主机公钥的authorized_keys文件后,开始测试SSH登录。

4.Hadoop集群配置
这一步的配置在7台系统上是相同的。在hadoop2.3.0中,以下配置文件都在%hadoop%/etc/hadoop目录里。现在以hapslave1系统为例进行配置。
1)core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<!-- 当前集群NameNode的IP地址和端口号。2.0前使用fs.default.name,但后续兼容-->
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.240:9000</value>
</property>
<property>
<!-- 设置临时文件目录。威格灵博客:www.cuiweiyou.com -->
<name>hadoop.tmp.dir</name>
<!-- 当前用户须要对此目录有读写权限。可使用命令sudo chown -hR hadoop /home/hadoop-2.3.0/ -->
<value>/home/hadoop-2.3.0/hadoop-temp</value>
</property>
</configuration>
2)hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<!-- SecondaryNamenode网络地址 -->
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.240:9001</value>
</property>
<property>
<!-- NameNode工作目录,须预先存在 -->
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop-2.3.0/dfs-name</value>
</property>
<property>
<!-- DataNode工作目录 -->
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop-2.3.0/dfs-data</value>
</property>
<property>
<!-- 文件(副本)的存储数量 -->
<name>dfs.replication</name>
<!-- 小于或等于附属机数量。默认3 -->
<value>4</value>
</property>
<property>
<!-- 可以从网页端监控hdfs -->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
3)mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<!-- map-reduce运行框架 -->
<name>mapreduce.framework.name</name>
<!-- yarn:分布式模式 -->
<value>yarn</value>
</property>
</configuration>
4)yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>Yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
</configuration>
5)yarn-env.sh
export JAVA_HOME=/home/jdk1.7.0_51
6)hadoop-env.sh
export JAVA_HOME=/home/jdk1.7.0_51
7)slaves
这里保存的是全部从属机的主机名。
hapslave1
hapslave2
hapslave3
hapslave4
hapslave5
hapslave6
8)拷贝
SHELL$ sudo scp -rpv /home/hadoop-2.3.0/etc/hadoop/* 其它主机:/home/hadoop-2.3.0/etc/hadoop/
六。启动集群
1.格式化HDFS系统
注意:需无任何warning或error。
SHELL../bin$ hdfs namenode -format 或 hadoop namenode -format

hadoop@hapmaster:/home/hadoop-2.3.0/bin$ hdfs namenode -format 14/03/14 13:27:47 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = hapmaster/127.0.0.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.3.0
STARTUP_MSG: classpath = /home/hadoop-2.3.0/etc/hadoop:/home/hadoop-2.3.0/share/hadoop/common/lib/jsr305-1.3.9.jar:/home/hadoop-2.3.0/share/hadoop/common/lib/junit-4.8.2.jar:
STARTUP_MSG: build = http://svn.apache.org/repos/asf/hadoop/common -r 1567123; compiled by 'jenkins' on 2014-02-11T13:40Z
STARTUP_MSG: java = 1.7.0_51
************************************************************/
14/03/14 13:27:47 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
Formatting using clusterid: CID-82cb09b4-74eb-4053-9b46-8de025de7f74
14/03/14 13:27:50 INFO namenode.FSNamesystem: fsLock is fair:true
14/03/14 13:27:51 INFO namenode.HostFileManager: read includes:
HostSet(
)
14/03/14 13:27:51 INFO namenode.HostFileManager: read excludes:
HostSet(
)
14/03/14 13:27:51 INFO blockmanagement.DatanodeManager: dfs.block.invalidate.limit=1000
14/03/14 13:27:51 INFO blockmanagement.DatanodeManager: dfs.namenode.datanode.registration.ip-hostname-check=true
14/03/14 13:27:51 INFO util.GSet: Computing capacity for map BlocksMap
14/03/14 13:27:51 INFO util.GSet: VM type = 32-bit
14/03/14 13:27:51 INFO util.GSet: 2.0% max memory 966.7 MB = 19.3 MB
14/03/14 13:27:51 INFO util.GSet: capacity = 2^22 = 4194304 entries
14/03/14 13:27:51 INFO blockmanagement.BlockManager: dfs.block.access.token.enable=false
14/03/14 13:27:51 INFO blockmanagement.BlockManager: defaultReplication = 4
14/03/14 13:27:51 INFO blockmanagement.BlockManager: maxReplication = 512
14/03/14 13:27:51 INFO blockmanagement.BlockManager: minReplication = 1
14/03/14 13:27:51 INFO blockmanagement.BlockManager: maxReplicationStreams = 2
14/03/14 13:27:51 INFO blockmanagement.BlockManager: shouldCheckForEnoughRacks = false
14/03/14 13:27:51 INFO blockmanagement.BlockManager: replicationRecheckInterval = 3000
14/03/14 13:27:51 INFO blockmanagement.BlockManager: encryptDataTransfer = false
14/03/14 13:27:51 INFO blockmanagement.BlockManager: maxNumBlocksToLog = 1000
14/03/14 13:27:51 INFO namenode.FSNamesystem: fsOwner = hadoop (auth:SIMPLE)
14/03/14 13:27:51 INFO namenode.FSNamesystem: supergroup = supergroup
14/03/14 13:27:51 INFO namenode.FSNamesystem: isPermissionEnabled = true
14/03/14 13:27:51 INFO namenode.FSNamesystem: HA Enabled: false
14/03/14 13:27:51 INFO namenode.FSNamesystem: Append Enabled: true
14/03/14 13:27:52 INFO util.GSet: Computing capacity for map INodeMap
14/03/14 13:27:52 INFO util.GSet: VM type = 32-bit
14/03/14 13:27:52 INFO util.GSet: 1.0% max memory 966.7 MB = 9.7 MB
14/03/14 13:27:52 INFO util.GSet: capacity = 2^21 = 2097152 entries
14/03/14 13:27:52 INFO namenode.NameNode: Caching file names occuring more than 10 times
14/03/14 13:27:52 INFO util.GSet: Computing capacity for map cachedBlocks
14/03/14 13:27:52 INFO util.GSet: VM type = 32-bit
14/03/14 13:27:52 INFO util.GSet: 0.25% max memory 966.7 MB = 2.4 MB
14/03/14 13:27:52 INFO util.GSet: capacity = 2^19 = 524288 entries
14/03/14 13:27:52 INFO namenode.FSNamesystem: dfs.namenode.safemode.threshold-pct = 0.9990000128746033
14/03/14 13:27:52 INFO namenode.FSNamesystem: dfs.namenode.safemode.min.datanodes = 0
14/03/14 13:27:52 INFO namenode.FSNamesystem: dfs.namenode.safemode.extension = 30000
14/03/14 13:27:52 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
14/03/14 13:27:52 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
14/03/14 13:27:52 INFO util.GSet: Computing capacity for map Namenode Retry Cache
14/03/14 13:27:52 INFO util.GSet: VM type = 32-bit
14/03/14 13:27:52 INFO util.GSet: 0.029999999329447746% max memory 966.7 MB = 297.0 KB
14/03/14 13:27:52 INFO util.GSet: capacity = 2^16 = 65536 entries
14/03/14 13:27:52 INFO common.Storage: Storage directory /home/hadoop-2.3.0/dfs-name has been successfully formatted.
14/03/14 13:27:52 INFO namenode.FSImage: Saving image file /home/hadoop-2.3.0/dfs-name/current/fsimage.ckpt_0000000000000000000 using no compression
14/03/14 13:27:52 INFO namenode.FSImage: Image file /home/hadoop-2.3.0/dfs-name/current/fsimage.ckpt_0000000000000000000 of size 218 bytes saved in 0 seconds.
14/03/14 13:27:52 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
14/03/14 13:27:52 INFO util.ExitUtil: Exiting with status 0
14/03/14 13:27:52 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hapmaster/127.0.0.1
************************************************************/
hadoop@hapmaster:/home/hadoop-2.3.0/bin$
2.启动集群
SHELL.../sbin$ start-all.sh
3.监控集群资源
1)命令行
SHELL$ hdfs dfsadmin -report
2)网页

- end
威格灵博客:www.cuiweiyou.com
Hadoop上路-01_Hadoop2.3.0的分布式集群搭建的更多相关文章
- 分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建
一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...
- Hadoop 3.0完全分布式集群搭建方法(CentOS 7+Hadoop 3.2.0)
本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是3.2.0,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...
- Hadoop 2.0完全分布式集群搭建方法(CentOS7+Hadoop 2.7.7)
本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是2.7.7,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...
- Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程
1.选取三台服务器(CentOS系统64位) 114.55.246.88 主节点 114.55.246.77 从节点 114.55.246.93 从节点 之后的操作如果是用普通用户操作的话也必须知道r ...
- hbase分布式集群搭建
hbase和hadoop一样也分为单机版.伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建. hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop ...
- Hadoop完全分布式集群搭建
Hadoop的运行模式 Hadoop一般有三种运行模式,分别是: 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统.,用于开发和 ...
- 大数据之Hadoop完全分布式集群搭建
1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...
- hadoop伪分布式集群搭建与安装(ubuntu系统)
1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...
- Hadoop分布式集群搭建
layout: "post" title: "Hadoop分布式集群搭建" date: "2017-08-17 10:23" catalog ...
随机推荐
- C# Hook钩子实例代码之截取键盘输入,需要的朋友可以参考下
一.关于本文 以最通俗的语言说明钩子的使用方法,具体到钩子的详细介绍可以参照下面的网址: http://www.microsoft.com/china/community/program/origin ...
- UVa OJ 10071
Problem B Back to High School Physics Input: standard input Output: standard output A particle has i ...
- Emacs golang 配置
在配置前需要下载用到的包: godoc godef gocode oracle 在下载包之前需要设置好环境变量: # Golang export GOROOT=$HOME/go export GOPA ...
- [Android]天气App 1
闲赋在家,无事可做就想着做点东西,于是乎把玩手机,我最常用的就是看天气,基本上我每天起来第一件事就是看天气,哈哈,用别人的这么爽,为什么不自己整一个关于天气的应用呢,墨迹天气.小米系统自带的天气.ya ...
- HTML超出文本显示省略号...[text-overflow]
需要对div或者span同时应用Css: text-overflow:ellipsis; white-space:nowrap; overflow:hidden; 即可实现所想要得到的溢出文本显示省略 ...
- 如何解决firefox下window.event的问题
一.在函数中传递event参数 在函数中传递event参数,这样我们就可以兼容IE和FF的event的获取了,如下面的函数: function _test(evt){ var src = evt ...
- HDU 4424 Conquer a New Region
http://acm.hdu.edu.cn/showproblem.php?pid=4424 [题目大意] 给你N个点和N-1条边的连通图,也就是说任意两点间的路径是唯一的.每条边有个权值,从一点到另 ...
- 51nod 棋盘问题(博弈论)
题目链接: 棋盘问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 上帝创造了一个n*m棋盘,每一个格子都只有可能是黑色或者白色的. 亚当和夏娃在玩一个游戏,每次寻找边长为x的正方 ...
- 用Chrome在电脑上模拟微信浏览器
1.先了解安卓微信和Ios微信的UA(User agent:用户代理) 安卓微信UA: mozilla/5.0 (linux; u; android 4.1.2; zh-cn; mi-one plus ...
- 每日一词【命令行CMD】
CURL 中文:命令行URL下载 英文解释:CommendLine Uniform Resource Locator 使用场景: 文件传输 curl是利用URL语法在命令行方式下工作的开源文件传输工具 ...

