国内海外服务器测评及优惠
Linux服务器运维救灾服务

基于CentOS的Hadoop分布式环境的搭建开发

首先,要说明的一点的是,我不想重复发明轮子。如果想要搭建hadoop环境,网上有很多详细的步骤和命令代码,我不想再重复记录。

其次,我要说的是我也是新手,对于hadoop也不是很熟悉。但是就是想实际搭建好环境,看看他的庐山真面目,还好,还好,最好看到了。当运行wordcount词频统计的时候,实在是感叹hadoop已经把分布式做的如此之好,即使没有分布式相关经验的人,也只需要做一些配置即可运行分布式集群环境。

好了,言归真传。

在搭建hadoop环境中你要知道的一些事儿:

1.hadoop运行于linux系统之上,你要安装linux操作系统

2.你需要搭建一个运行hadoop的集群,例如局域网内能互相访问的linux系统

3.为了实现集群之间的相互访问,你需要做到ssh无密钥登录

4.hadoop的运行在jvm上的,也就是说你需要安装java的jdk,并配置好java_home

5.hadoop的各个组件是通过xml来配置的。在官网上下载好hadoop之后解压缩,修改/etc/hadoop中相应的配置文件

工欲善其事,必先利其器。这里也要说一下,在搭建hadoop环境中使用到的相关软件和工具:

1.virtualbox——毕竟要模拟几台linux,条件有限,就在virtualbox中创建几台虚拟机楼

2.centos——下载的centos7的iso镜像,加载到virtualbox中,安装运行

3.securecrt——可以ssh远程访问linux的软件

4.winscp——实现windows和linux的通信

5.jdk for linux——oracle官网上下载,解压缩之后配置一下即可

6.hadoop2.7.1——可在apache官网上下载

好了,下面分三个步骤来讲解

linux环境准备

 配置ip

为了实现本机和虚拟机以及虚拟机和虚拟机之间的通信,virtualbox中设置centos的连接模式为host-only模式,并且手动设置ip,注意虚拟机的网关和本机中host-only network 的ip地址相同。配置ip完成后还要重启网络服务以使得配置有效。这里搭建了三台linux,如下图所示

配置主机名字

对于192.168.56.101设置主机名字hadoop01。并在hosts文件中配置集群的ip和主机名。其余两个主机的操作与此类似

?
1
2
3
4
5
6
7
8
9
10
[root@hadoop01 ~]
# cat /etc/sysconfig/network
# created by anaconda
networking =
yes
hostname
= hadoop01  
[root@hadoop01 ~]
# cat /etc/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1     localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.101 hadoop01
192.168.56.102 hadoop02
192.168.56.103 hadoop03

永久关闭防火墙

service iptables stop(1.下次重启机器后,防火墙又会启动,故需要永久关闭防火墙的命令;2由于用的是centos 7,关闭防火墙的命令如下)

?
1
2
systemctl stop firewalld.service   
#停止firewall
systemctl disable firewalld.service
#禁止firewall开机启动

关闭selinux防护系统

改为disabled 。reboot重启机器,使配置生效

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@hadoop02 ~]
# cat /etc/sysconfig/selinux
 
# this file controls the state of selinux on the system
# selinux= can take one of these three values:
#   enforcing - selinux security policy is enforced
 
#   permissive - selinux prints warnings instead of enforcing
#   disabled - no selinux policy is loaded
selinux=disabled
# selinuxtype= can take one of three two values:
#   targeted - targeted processes are protected,
#   minimum - modification of targeted policy only selected processes are protected
#   mls - multi level security protection
selinuxtype=targeted

集群ssh免密码登录

首先设置ssh密钥

?
1
ssh
-keygen -t rsa

拷贝ssh密钥到三台机器

?
1
2
ssh
-copy-
id
192.168.56.101
<pre name=
"code"
class=
"plain"
>
ssh
-copy-
id
192.168.56.102

?
1
ssh
-copy-
id
192.168.56.103

这样如果hadoop01的机器想要登录hadoop02,直接输入ssh hadoop02

?
1
<pre name=
"code"
class=
"plain"
>
ssh
hadoop02

配置jdk

这里在/home忠诚创建三个文件夹中

tools——存放工具包

softwares——存放软件

data——存放数据

通过winscp将下载好的linux jdk上传到hadoop01的/home/tools中

解压缩jdk到softwares中

?
1
<pre name=
"code"
class=
"plain"
>
tar
-zxf jdk-7u76-linux-x64.
tar
.gz -c
/home/softwares

可见jdk的家在/home/softwares/jdk.x.x.x,将该拷贝粘贴到/etc/profile文件中,并且在文件中设置java_home

?
1
2
export
java_home=
/home/softwares/jdk0_111
export
path=$path:$java_home
/bin

保存修改,执行source /etc/profile使配置生效

查看java jdk是否安装成功:

?
1
java -version

可以将当前节点中设置的文件拷贝到其他节点

?
1
scp
-r
/home/
* root@192.168.56.10x:
/home

hadoop集群安装

集群的规划如下:

101节点作为hdfs的namenode ,其余作为datanode;102作为yarn的resourcemanager,其余作为nodemanager。103作为secondarynamenode。分别在101和102节点启动jobhistoryserver和webappproxyserver

下载hadoop-2.7.3

并将其放在/home/softwares文件夹中。由于hadoop需要jdk的安装环境,所以首先配置/etc/hadoop/hadoop-env.sh的java_home

(ps:感觉我用的jdk版本过高了)

接下来依次修改hadoop相应组件对应的xml

修改core-site.xml :

指定namenode地址

修改hadoop的缓存

hadoop的垃圾回收机制

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<
configuration
>
  
<
property
>
    
<
name
>fsdefaultfs</
name
>
    
<
value
>hdfs://101:8020</
value
>
  
</
property
>
  
<
property
>
    
<
name
>hadooptmpdir</
name
>
    
<
value
>/home/softwares/hadoop-3/data/tmp</
value
>
  
</
property
>
  
<
property
>
    
<
name
>fstrashinterval</
name
>
    
<
value
>10080</
value
>
  
</
property
>
   
</
configuration
>

hdfs-site.xml

设置备份数目

关闭权限

设置http访问接口

设置secondary namenode 的ip地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<
configuration
>
  
<
property
>
    
<
name
>dfsreplication</
name
>
    
<
value
>3</
value
>
  
</
property
>
  
<
property
>
    
<
name
>dfspermissionsenabled</
name
>
    
<
value
>false</
value
>
  
</
property
>
  
<
property
>
    
<
name
>dfsnamenodehttp-address</
name
>
    
<
value
>101:50070</
value
>
  
</
property
>
  
<
property
>
    
<
name
>dfsnamenodesecondaryhttp-address</
name
>
    
<
value
>103:50090</
value
>
  
</
property
>
</
configuration
>

 修改mapred-site.xml.template名字为mapred-site.xml

指定mapreduce的框架为yarn,通过yarn来调度

指定jobhitory

指定jobhitory的web端口

开启uber模式——这是针对mapreduce的优化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<
configuration
>
  
<
property
>
    
<
name
>mapreduceframeworkname</
name
>
    
<
value
>yarn</
value
>
  
</
property
>
  
<
property
>
    
<
name
>mapreducejobhistoryaddress</
name
>
    
<
value
>101:10020</
value
>
  
</
property
>
  
<
property
>
    
<
name
>mapreducejobhistorywebappaddress</
name
>
    
<
value
>101:19888</
value
>
  
</
property
>
  
<
property
>
    
<
name
>mapreducejobubertaskenable</
name
>
    
<
value
>true</
value
>
  
</
property
>
</
configuration
>

修改yarn-site.xml

指定mapreduce为shuffle

指定102节点为resourcemanager

指定102节点的安全代理

开启yarn的日志

指定yarn日志删除时间

指定nodemanager的内存:8g

指定nodemanager的cpu:8核

?
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
33
<
configuration
>
 
<!-- site specific yarn configuration properties -->
  
<
property
>
    
<
name
>yarnnodemanageraux-services</
name
>
    
<
value
>mapreduce_shuffle</
value
>
  
</
property
>
  
<
property
>
    
<
name
>yarnresourcemanagerhostname</
name
>
    
<
value
>102</
value
>
  
</
property
>
  
<
property
>
    
<
name
>yarnweb-proxyaddress</
name
>
    
<
value
>102:8888</
value
>
  
</
property
>
  
<
property
>
    
<
name
>yarnlog-aggregation-enable</
name
>
    
<
value
>true</
value
>
  
</
property
>
  
<
property
>
    
<
name
>yarnlog-aggregationretain-seconds</
name
>
    
<
value
>604800</
value
>
  
</
property
>
  
<
property
>
    
<
name
>yarnnodemanagerresourcememory-mb</
name
>
    
<
value
>8192</
value
>
  
</
property
>
  
<
property
>
    
<
name
>yarnnodemanagerresourcecpu-vcores</
name
>
    
<
value
>8</
value
>
  
</
property
>
 
</
configuration
>

配置slaves

指定计算节点,即运行datanode和nodemanager的节点

192.168.56.101 
192.168.56.102 
192.168.56.103 

先在namenode节点格式化,即101节点上执行:

进入到hadoop主: cd /home/softwares/hadoop-3  

执行bin下的hadoop脚本: bin/hadoop namenode -format 

出现successful format才算是执行成功(ps,这里是盗用别人的图,不要介意哈)

 以上配置完成后,将其拷贝到其他的机器

hadoop环境测试

进入hadoop主下执行相应的脚

赞(0) 打赏
未经允许不得转载:linuxcto运维 » 基于CentOS的Hadoop分布式环境的搭建开发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫