大数据开发|Hadoop分布式集群环境构建

广告位

一直想编写一系列有关大数据开发、数据挖掘、云计算等相关课程的学习资料,为零基础又想从事大数据行业的小伙伴提供一…

一直想编写一系列有关大数据开发、数据挖掘、云计算等相关课程的学习资料,为零基础又想从事大数据行业的小伙伴提供一些参考。今天第一篇《Hadoop分布式集群环境构建(1)》终于和大家见面了。

集群主机规划

软件安装包准备

会将软件所有安装包放入百度云盘,以供大家方便下载。链接:http://pan.baidu.com/s/1i5CdjI9 密码:f7rn

安装环境准备

3.1

创建用户

为每台机子创建一个不是root的用户,该集群是以hadoop来创建的。并且每台机子的用户以及密码都要相同。

操作命令:

每台服务器用root账户下:

useradd hadoop

echo “hadoop” | passwd –stdin  Hadoop

3.2

配置hosts文件以及network

集群中的所有机器的 /etc/hosts 文件内容均一致,都要将集群中的各 IP 和 主机名对应起来,而且都能互相ping通。如下:

修改集群所有机子的/etc/sysconfig/network文件,HOSTNAME要改成对应的主机名。如下:

安装jdk

首先解压该安装包:

tar -xvzf jdk-7u67-linux-x64.tar.gz  -C  /

对解压的安装包重新命名

mv jdk1.7.0_67 jdk

将jdk文件复制到/home/hadoop/目录下并赋予相应权限

cp  /jdk  /home/hadoop/

chown   -R  hadoop:hadoop /home/hadoop/jdk

配置jdk的环境变量:

vi /etc/profile

使以上配置环境变量生效:

Source  /etc/profile

以上步骤其余机子都需要操作一遍

ssh免密码通信

通过云盘中提供的一个脚本文件来实现,名称是zeno_ssh_update.sh。

首先需要创建一个目录:/home/zeno_programpag

然后将下载的脚本文件放入到这个目录下。

加入如下内容:

执行脚本文件(root用户下执行)

./zeno_ssh_update.sh hadoop hadoop

脚本后面跟的是用户名及用户密码

检查SSH免密码登录是否完成。

想系统学习大数据的话,可以加入大数据技术学习扣扣君羊:522189307

安装zookeeper

6.1

解压zookeeper

将该安装包解压到/home/hadoop/下

tar  -zxvf zookeeper-3.4.5-cdh5.4.0.tar.gz –C /home/hadoop/

6.2

修改配置文件

在/home/hadoop/zookeeper/conf目录下,复制一各名为zoo.cfg的文件

cp  zoo_sample.cfg  zoo.cfg

修改zoo.cfg中的文件内容

加入如下标注的内容

创建/tmp/zookeeper/目录,并赋予hadoop的所有组及所有者权限

mkdir  -p /tmp/zookeeper/

并创建myid文件,加入zoo.cfg中对应的数

将/home/Hadoop/zookeeper 复制到其他机子。

scp  -r /home/Hadoop/zookeeper/  hadoop@hadoop3:/home/hadoop/

scp  -r /home/Hadoop/zookeeper/  hadoop@hadoop5:/home/hadoop/

注意每台机子都需要创建myid这个文件,并修改对应的数字。

6.3

启动zookeeper服务(三台机子)

/home/hadoop/zookeeper/sbin/ zkServer.sh  start

6.4

查看zookeeper服务状态

出现以下的状态就说明zookeeper成功了

安装hadoop集群

7.1

解压hadoop安装包

tar  -zxvf hadoop-2.6.0-cdh5.4.0.tar.gz –C /home/hadoop/

chown -R hadoop:hadoop /home/hadoop/hadoop

7.2

修改配置文件

01

hadoop-env.sh文件

向其中添加如下两行:

export JAVA_HOME=/home/hadoop/jdk
export HADOOP_HOME=/home/hadoop/Hadoop

02

配置core-site.xml

#vi  core-site.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>
<configuration>
<property>
<!–填写hdfs集群名,因为是HA,两个namenode–>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<!– hadoop很多路径都依赖他,namenode节点该目录不可以删除,否则要重新格式化–>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/data/hadoop/tmp</value>
</property>

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/path/to/journal/node/local/data</value>

</property>
<property>
<!–zookeeper集群的地址–>
<name>ha.zookeeper.quorum</name>
<value>hadoop5:2181,hadoop4:2181,hadoop3:2181</value>
</property>
</configuration>

需要手动创建:/home/hadoop/hadoop/data/hadoop/tmp目录

mkdir –p /home/hadoop/hadoop/data/hadoop/tmp

03

配置hdfs-site.xml

#vi hdfs-site.xml

<configuration>

<property>

<!—journalnode对namenode进行共享设置–>

<name>dfs.journalnode.edits.dir</name>

<value>/home/hadoop/hadoop/ha/journal</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

<property>

<name>dfs.permissions.enabled</name>

<value>false</value>

</property>

<property>

 

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

 

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>/home/hadoop/hadoop/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/home/hadoop/hadoop/dfs/data</value>

</property>

<property>

<name>dfs.nameservices</name>

<value>mycluster</value>

</property>

<property>

<name>dfs.ha.namenodes.mycluster</name>

<value>nn1,nn2</value>

</property>

<property>

<name>dfs.namenode.rpc-address.mycluster.nn1</name>

<value>hadoop3:8020</value>

</property>

<property>

<name>dfs.namenode.rpc-address.mycluster.nn2</name>

<value>hadoop4:8020</value>

</property>

<property>

<name>dfs.namenode.http-address.mycluster.nn1</name>

<value>hadoop3:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.mycluster.nn2</name>

<value>hadoop4:50070</value>

</property>

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://hadoop5:8485;hadoop4:8485;hadoop3:8485/mycluster</value>

</property>

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.client.failover.proxy.provider.mycluster</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<property>

<name>dfs.ha.fencing.methods</name>

<value>

sshfence

 

</value>

</property>

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/home/hadoop/.ssh/id_rsa</value>

</property>

<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>

<value>30000</value>

</property>

</configuration>

04

配置mapred-env.sh

加入

export JAVA_HOME=/home/hadoop/jdk

05

配置mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

06

配置yarn-env.sh

export JAVA_HOME=/home/hadoop/jdk

07

配置yarn-site.xml

# vi  yarn-site.xml

<configuration>

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

</property>

<property>

<name>yarn.resourcemanager.cluster-id</name>

<value>cluster1</value>

</property>

<property>

<name>yarn.resourcemanager.ha.rm-ids</name>

<value>rm1,rm2</value>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>hadoop3</value>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm2</name>

<value>hadoop4</value>

</property>

<property>

<name>yarn.resourcemanager.zk-address</name>

<value>hadoop5:2181,hadoop4:2181,hadoop3:2181</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

08

配置slaves

以上hadoop的配置就算完成了。

将/home/Hadoop/Hadoop/ 拷贝到其他机子上

scp –r /home/Hadoop/Hadoop/  hadoop@hadoop3:/home/Hadoop/

scp –r /home/Hadoop/Hadoop/  hadoop@hadoop5:/home/Hadoop/

启动集群

8.1

格式换命名空间(hadoop4)

/home/hadoop/hadoop/bin/hdfs zkfc -formatZK

8.2

启动journalnode(三台)

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start journalnode

通过jps查看一下出现journalnode说明成功

8.3

格式化master节点并启动hadoop服务

/home/hadoop/hadoop/bin/hadoop namenode -format mycluster

启动hadoop服务

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start namenode

将hadoop4这台机子格式化的文件拷贝到hadoop3上

格式化后的文件是放在/home/hadoop/hadoop/dfs/name这个目录下的。

scp /home/hadoop/hadoop/dfs/name hadoop@hadoop3:/home/hadoop/hadoop/dfs/name/

在hadoop3上启动hadoop服务

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start namenode

8.4

hadoop4和hadoop3节点上启动zkfs

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start zkfc

8.5

启动DataNode(三台)

/home/hadoop/hadoop /sbin/hadoop-daemon.sh start datanode

8.6

启动yarn(一台master)

/home/hadoop/hadoop /sbin/start-yarn.sh

Ok,所有的进程都已启动完成了。

网页通过端口访问hadoop:http://192.168.211.88:50070/

以下的效果说明已经完全构建了一个HA高可用的hadoop大数据集群环境。

集群环境mapreduce测试:

执行hadoop自带的mapreduce是否能够成功?

/home/hadoop/hadoop/bin/hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.4.0.jar wordcount /wangyd/  /output/wordcount1

发现mapreduce执行也是没有问题了,说明整个集群搭建ok了。

想系统学习大数据的话,可以加入大数据技术学习扣扣君羊:522189307

大数据小光头

关于作者: 大数据小光头

为您推荐