centos安装hadoop集群,centos7安装详细图解

大家好,感谢邀请,今天来为大家分享一下centos安装hadoop集群的问题,以及和centos7安装详细图解的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

如何构建最优化的Hadoop集群

操作系统

我们选择Linux作为操作系统。Linux有许多不同的发行版,包括Ubuntu、RedHat和CentOS等,无论选择哪一个都可以。基于支持和许可费用的考虑,我们最终选择了CentOS 5.7。最好是定制一个CentOS的映像,把那些需要的软件都预装进去,这样所有的机器可以包含相同的软件和工具,这是一个很好的做法。

根据Cloudera的建议,OS层应该采用以下设置:

文件系统

Ext3文件系统

取消atime

不要使用逻辑卷管理

利用alternatives来管理链接

使用配置管理系统(Yum、Permission、sudoers等)

减少内核交换

撤销一般用户访问这些云计算机的权限

不要使用虚拟化

至少需要以下Linux命令:

/etc/alternatives

ln、chmod、chown、chgrp、mount、umount、kill、rm、yum、mkdir

硬件要求

由于Hadoop集群中只有两种节点(Namenode/Jobtracker和Datanode/Tasktracker),因此集群内的硬件配置不要超过两种或三种。

图2- Hadoop集群服务器角色

硬件建议:

Namenode/Jobtracker:1Gb/s以太网口x2、16GB内存、4个CPU、100GB磁盘

Datanode:1Gb/s以太网口x2、8GB内存、4个CPU、多个磁盘,总容量500GB以上

实际的硬件配置可以与我们建议的配置不同,这取决于你们需要存储和处理的数据量。但我们强烈建议不要在集群中混用不同的硬件配置,以免那些较弱的机器成为系统的瓶颈。

Hadoop的机架感知

Hadoop有一个“机架感知”特性。管理员可以手工定义每个slave数据节点的机架号。为什么要做这么麻烦的事情?有两个原因:防止数据丢失和提高网络性能。

图3- Hadoop集群的机架感知

为了防止数据丢失,Hadoop会将每个数据块复制到多个机器上。想象一下,如果某个数据块的所有拷贝都在同一个机架的不同机器上,而这个机架刚好发生故障了(交换机坏了,或者电源掉了),这得有多悲剧?为了防止出现这种情况,必须要有一个人来记住所有数据节点在网络中的位置,并且用这些知识来确定——把数据的所有拷贝们放在哪些节点上才是最明智的。这个“人”就是Name Node。

另外还有一个假设,即相比不同机架间的机器,同一个机架的机器之间有着更大的带宽和更小的延时。这是因为,机架交换机的上行带宽一般都小于下行带宽。而且,机架内的延时一般也小于跨机架的延时(但也不绝对)。

机架感知的缺点则是,我们需要手工为每个数据节点设置机架号,还要不断地更新这些信息,保证它们是正确的。要是机架交换机们能够自动向Namenode提供本机架的数据节点列表,那就太棒了。

Hadoop软件的安装和配置

Hadoop集群有多种构建方式:

手工下载tar文件并复制到集群中

利用Yum仓库

利用Puppet等自动化部署工具

我们不建议采用手工方式,那只适合很小的集群(4节点以下),而且会带来很多维护和排障上的问题,因为所有的变更都需要用scp或ssh的方式手工应用到所有的节点上去。

从以下方面来看,利用Puppet等部署工具是最佳的选择:

安装

配置

维护

扩展性

监控

排障

Puppet是Unix/Linux下的一个自动化管理引擎,它能基于一个集中式的配置执行增加用户、安装软件包、更新服务器配置等管理任务。我们将主要讲解如何利用Yum和Puppet来安装Hadoop。

利用Yum/Puppet搭建Hadoop集群

要利用Puppet搭建Hadoop集群,首先要符合以下前置条件:

包含所有必需Hadoop软件的中央仓库

用于Hadoop部署的Puppet装载单(manifest)

用于Hadoop配置管理的Puppet装载单

用于集群维护的框架(主要是sh或ksh脚本),以支持集群的start/stop/restart

利用puppet构建整个服务器(包括操作系统和其它软件)

注:如果要用Yum来安装Hadoop集群,则所有服务器应该预先构建完成,包括操作系统和其它软件都应安装完毕,yum仓库也应在所有节点上设置完毕。

构建Datanode/Tasktracker

如果用Yum安装Datanode/Tasktracker,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-datanode–y

yum install hadoop-0.20-tasktracker–y

换成Puppet的话,则是:

class setup_datanode{

if($is_datanode== true){

make_dfs_data_dir{$hadoop_disks:}

make_mapred_local_dir{$hadoop_disks:}

fix_hadoop_parent_dir_perm{$hadoop_disks:}

}

# fix hadoop parent dir permissions

define fix_hadoop_parent_dir_perm(){

}

# make dfs data dir

define make_dfs_data_dir(){

}

# make mapred local and system dir

define make_mapred_local_dir(){

}

}# setup_datanode

构建Namenode(及辅助Namenode)

如果用Yum安装Namenode,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-namenode–y

yum install hadoop-0.20-secondarynamenode–y

换成Puppet的话,则是:

class setup_namenode{

if($is_namenode== true or$is_standby_namenode== true){

...

}

exec{"namenode-dfs-perm":

...

}

exec{"make${nfs_namenode_dir}/dfs/name":

...

}

exec{"chgrp${nfs_namenode_dir}/dfs/name":

...

}

if($standby_namenode_host!=""){

...

}

exec{"own$nfs_standby_namenode_dir":

...

}

}

#/standby_namenode_hadoop

if($standby_namenode_host!=""){

...

}

exec{"own$standby_namenode_hadoop_dir":

...

}

}

}

}

class setup_secondary_namenode{

if($is_secondarynamenode== true){

...

}

....

}

exec{"namenode-dfs-perm":

...

}

}

}

构建JobTracker

如果用Yum安装Jobtracker,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-jobtracker–y

换成Puppet的话,则是使用与构建Namenode相同的装载单,唯一的区别在于,在Jobtracker机器上,会启动Jobtracker——即将该机器上的is_jobtracker设置为true。

部署hadoop生产集群时为了域名转换需要哪些配置

一、实验环境:

Mac os下 VirtualBox中三台安装centos 6.3虚拟机

主机名

别名

IP地址

系统版本

角色

lhmaster

lhmaster.lihui.hadoop

192.168.1.4

Centos 6.3

master

lhslave01

lhslave01.lihui.hadoop

192.168.1.5

Centos 6.3

slave

lhslave02

lhslave02.lihui.hadoop

192.168.1.6

Centos 6.3

slave

配置说明:DNS服务器配置在lhmaster(master)节点上,对lhmaster、lhslave01、lhslave02节点的主机名进行解析。

二、安装配置DNS

1.安装bind软件包

检测bing是否安装,如图所示

未安装执行yum进行安装,如图

安装结果,如图

安装bing其他相关包,如下:

安装结果:如图

2.修改bind配置文件

1)执行命令 vim/etc/named.conf修改配置文件named.conf

修改前,如图

修改后:

2)修改配置文件named.rfc1912.zones,

在/etc/named.conf玩呢间最后是named.rfc1912.zones的路径

include"/etc/named.rfc1912.zones"

执行命令 vim/etc/named.rfc.1912.zones

修改结果如下图:

3)创建上一步中的域名配置文件lihui.hadoop.zone和反向配置文件1.168.192.in-addr.zone

如下命令:

[root@lhmaster lihui]# cd/var/named

[root@lhmaster named]# ls

chroot dynamic named.empty named.loopback

data named.ca named.localhost slaves

[root@lhmaster named]# cp-p named.localhost lihui.hadoop.zone

[root@lhmaster named]# cp-p named.localhost 1.168.192.in-addr.zone

[root@lhmaster named]# ls

1.168.192.in-addr.zone dynamic named.empty slaves

chroot lihui.hadoop.zone named.localhost

data named.ca named.loopback

--修改lihui.hadoop.zone和1.168.192.in-addr.zone

lihui.hadoop.zone中添加正向配置,如下:

1.168.192.in-addr.zone中添加反向配置,如下:

4)修改各节点/etc/resolv.conf文件

在每个节点的/etc/resolv.conf文件中加入服务器ip地址

本次测试加入:nameserver 192.168.1.4

注意:目前网上大部分资料中都是如此设置,设置完后运行没有什么问题,但是一旦重启机器后,/etc/resolv.conf会恢复原值,

所以使用另一种方式就是修改

/etc/sysconfig/network-scripts/ifcfg-eth0

这个文件:在其中加入 DNS1=192.168.4

这样设置后,/etc/resolv.conf里面根本就不需要设置。service network restart后,可以发现/etc/resolv.conf里面就有刚才加入的dns的解析ip了。

不过对于其他的系统是否也是这样的,要是遇到同样的问题。就这样设一下试试

3.验证测试

如何部署hadoop分布式文件系统

一、实战环境

系统版本:CentOS 5.8x86_64

JAVA版本:JDK-1.7.0_25

Hadoop版本:hadoop-2.2.0

192.168.149.128namenode(充当namenode、secondary namenode和ResourceManager角色)

192.168.149.129datanode1(充当datanode、nodemanager角色)

192.168.149.130datanode2(充当datanode、nodemanager角色)

二、系统准备

1、Hadoop可以从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,所以如果需要在64位系统上部署则需要单独下载src源码自行编译。(如果是真实线上环境,请下载64位hadoop版本,这样可以避免很多问题,这里我实验采用的是32位版本)

1234 Hadoop

Java

2、我们这里采用三台CnetOS服务器来搭建Hadoop集群,分别的角色如上已经注明。

第一步:我们需要在三台服务器的/etc/hosts里面设置对应的主机名如下(真实环境可以使用内网DNS解析)

[root@node1 hadoop]# cat/etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1localhost.localdomain localhost

192.168.149.128node1

192.168.149.129node2

192.168.149.130node3

(注*我们需要在namenode、datanode三台服务器上都配置hosts解析)

第二步:从namenode上无密码登陆各台datanode服务器,需要做如下配置:

在namenode 128上执行ssh-keygen,一路Enter回车即可。

然后把公钥/root/.ssh/id_rsa.pub拷贝到datanode服务器即可,拷贝方法如下:

ssh-copy-id-i.ssh/id_rsa.pub root@192.168.149.129

ssh-copy-id-i.ssh/id_rsa.pub root@192.168.149.130

三、Java安装配置

tar-xvzf jdk-7u25-linux-x64.tar.gz&&mkdir-p/usr/java/; mv/jdk1.7.0_25/usr/java/即可。

安装完毕并配置java环境变量,在/etc/profile末尾添加如下代码:

export JAVA_HOME=/usr/java/jdk1.7.0_25/

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=$JAVE_HOME/lib/dt.jar:$JAVE_HOME/lib/tools.jar:./

保存退出即可,然后执行source/etc/profile生效。在命令行执行java-version如下代表JAVA安装成功。

[root@node1~]# java-version

java version"1.7.0_25"

Java(TM) SE Runtime Environment(build 1.7.0_25-b15)

Java HotSpot(TM) 64-Bit Server VM(build 23.25-b01, mixed mode)

(注*我们需要在namenode、datanode三台服务器上都安装Java JDK版本)

四、Hadoop版本安装

官方下载的hadoop2.2.0版本,不用编译直接解压安装就可以使用了,如下:

第一步解压:

tar-xzvf hadoop-2.2.0.tar.gz&&mv hadoop-2.2.0/data/hadoop/

(注*先在namenode服务器上都安装hadoop版本即可,datanode先不用安装,待会修改完配置后统一安装datanode)

第二步配置变量:

在/etc/profile末尾继续添加如下代码,并执行source/etc/profile生效。

export HADOOP_HOME=/data/hadoop/

export PATH=$PATH:$HADOOP_HOME/bin/

export JAVA_LIBRARY_PATH=/data/hadoop/lib/native/

(注*我们需要在namenode、datanode三台服务器上都配置Hadoop相关变量)

五、配置Hadoop

在namenode上配置,我们需要修改如下几个地方:

1、修改vi/data/hadoop/etc/hadoop/core-site.xml内容为如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href=\'#\'" Put site-specific property overrides inthisfile.-->

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://192.168.149.128:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/tmp/hadoop-${user.name}</value>

<description>A base forother temporary directories.</description>

</property>

</configuration>

2、修改vi/data/hadoop/etc/hadoop/mapred-site.xml内容为如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href=\'#\'" Put site-specific property overrides inthisfile.-->

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>192.168.149.128:9001</value>

</property>

</configuration>

3、修改vi/data/hadoop/etc/hadoop/hdfs-site.xml内容为如下:

<?xml version="1.0"encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl"href=\'#\'"/name>

<value>/data/hadoop/data_name1,/data/hadoop/data_name2</value>

</property>

<property>

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

<value>/data/hadoop/data_1,/data/hadoop/data_2</value>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

</configuration>

4、在/data/hadoop/etc/hadoop/hadoop-env.sh文件末尾追加JAV_HOME变量:

echo"export JAVA_HOME=/usr/java/jdk1.7.0_25/">>/data/hadoop/etc/hadoop/hadoop-env.sh

5、修改 vi/data/hadoop/etc/hadoop/masters文件内容为如下:

192.168.149.128

6、修改vi/data/hadoop/etc/hadoop/slaves文件内容为如下:

192.168.149.129

192.168.149.130

如上配置完毕,以上的配置具体含义在这里就不做过多的解释了,搭建的时候不明白,可以查看一下相关的官方文档。

如上namenode就基本搭建完毕,接下来我们需要部署datanode,部署datanode相对简单,执行如下操作即可。

1 fori in`seq 129130`; doscp-r/data/hadoop/ root@192.168.149.$i:/data/; done

自此整个集群基本搭建完毕,接下来就是启动hadoop集群了。

阅读剩余
THE END