hadoop 分布式搭建

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
下面我们一起来搭建吧。

准备工具

linux环境下搭建hadoop集群需要准备:
VMware-workstation-10.0.1注册机
CentOS-6.5-x86_64-bin-DVD1
jdk-7u79-linux-x64
hadoop-2.6.4.tar

新建虚拟机

解压VMware-workstation-10.0.1注册机,打开VMware Workstation主页,点击新建虚拟机,选择典型,如下:

点击下一步,选择安装程序光盘映像文件,浏览找到你下载CentOS-6.5-x86_64-bin-DVD1的压缩包文件,如下:

继续点击下一步,填写用户名和密码(尽量简单),填好后点击下一步,为即将创建的虚拟机命名并选择安装路径(最好不要安装在C盘),如下所示:

继续点击下一步至如下界面:

点击自定义硬件可以修改虚拟机的各项参数,如果电脑内存小于等于4GB,需要将内存改至512MB,否则严重卡顿。修改完成后点击完成,虚拟机就创建成功,打开后界面如下:

若要批量创建虚拟机,可以在创建好的虚拟机的基础上进行克隆操作,

安装jdk

打开一个虚拟机,右键单击桌面选择Open in Terminal,进入编辑界面:

假设用户名为wxx

获取root权限

1
2
3
su  
cd /etc
vi sudoers

i 进入编辑状态,在

1
root ALL=(ALL)

ALL的下一行编辑

1
wxx  ALL=(ALL) ALL

按ESC键,退出编辑格式
按Shift + :
输入wq!保存并退出

创建hadoop文件夹

1
2
cd
mkdir hadoop

将jdk-7u79-linux-x64安装包复制到hadoop文件目录下(与windows环境下类似)。

解压jdk-7u79-linux-x64.gz文件

1
2
3
cd
cd hadoop
tar-zxvf jdk-7u79-linux-x64.gz

设置jdk环境变量

1
2
3
4
cd
cd hadoop
su
gedit /etc/profile

进入后在最后一行添加以下指令:

1
2
3
export JAVA_HOME=/home/by/hadoop/jdk1.8.0_11
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

点击保存后关闭,输入以下指令使jdk生效:

1
source /etc/profile

检查jdk是否安装成功

1
java -version

成功后显示如下信息:

1
2
3
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

创建集群

克隆虚拟机

将已经安装好jdk的虚拟机克隆两个,创建三个虚拟机的集群。

修改hostname

1
2
su
vi /etc/sysconfig/network

将三个虚拟机分别命名master、slave1、slave2
如图:

完成后重启虚拟机reboot

将三个虚拟机的ip地址相互连接

首先必须确保虚拟机联网,如果NET模式连不上网,则选中桥接模式。
网络通畅后执行以下操作:
1.查看三台虚拟机IP,分别对三个虚拟机执行指令ifconfig,查看各虚拟机ip地址

2.在master中执行以下指令

1
2
3
su
cd/etc
gedit /etc/hosts 192.168.142.142 192.168.142.143

进入编辑界面后按“IP地址 hostname”填写信息,如图:

填写完后按Save按钮,关闭编辑页。

3.将配置好的文件复制到slave1、slave2中,在master中执行以下指令:

1
2
scp /etc/hosts root@slave1:/etc/
scp /etc/hosts root@slave2:/etc/

4.检查各虚拟机是否互联,在master中执行以下指令:

1
2
ping slave1
ping slave2

连通即完成

配置SSH无密钥登录

1.关闭防火墙,对每个虚拟机进行如下操作:

1
2
su
chkconfig iptables off

执行后重启虚拟机:

1
reboot

2.关闭防火墙后在master下执行以下指令:

1
2
3
4
5
6
7
cd
ssh-keygen –t rsa
cd .ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
scp authorized_keys wxx@slave1:~/.ssh/
scp authorized_keys wxx@slave2:~/.ssh/

3.检查无密钥登录是否成功

1
2
3
ssh slave1
ssh slave2
ssh master

成功后显示如下:

安装并配置hadoop-2.6.4(在master中)

1.将hadoop-2.6.4.tar.gz安装包复制到hadoop文件目录下(与windows环境下类似)。

2.解压hadoop-2.6.4.tar.gz

1
2
3
cd
cd hadoop
tar -zxvf hadoop-2.6.4.tar.gz

3.配置hadoop-2.6.4的各项文件

1
2
3
4
cd
cd hadoop/hadoop-2.7.4
cd etc/hadoop
gedit hadoop-env.sh

在最后一行添加:

1
export JAVA_HOME=/home/by/hadoop/ jdk1.8.0_11

编辑core-site.xml

1
gedit core-site.xml

添加代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<final>true</final>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/by/hadoop/tmp</value>
</property>
<property>
<name>ds.default.name</name>
<value>hdfs://master:54310</value>
<final>true</final>
</property>

编辑hdfs-site.xml

1
gedit hdfs-site.xml

添加代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/by/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/by/hadoop/dfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

编辑mapred-site.xml

1
gedit mapred-site.xml

注意:必须先复制mapred-site.xml.template文件更名为mapred-site.xml
添加代码:

1
2
3
4
5
6
7
8
9
10
11
12
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>

编辑yarn-site.xml

1
gedit  yarn-site.xml

添加代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<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>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>

编辑master

1
gedit master

添加代码:

1
master

编辑slaves

1
gedit slaves

添加代码:

1
2
3
master
slave1
slave2

4.将配置好的文件复制到slave1、slave2中

1
2
3
4
cd 
cd hadoop
scp -r hadoop-2.7.4 slave1:~/hadoop
scp -r hadoop-2.7.4 slave2:~/hadoop

5.启动集群

1
2
3
4
5
6
cd
cd hadoop/hadoop-2.7.4
bin/hdfs namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/hadoop-daemon.sh start secondarynamenode

6.检查集群情况

1
jps

三台虚拟机如下所示:



-------------本文结束感谢您的阅读-------------
AmberWu wechat
欢迎大家扫码交流!