如何部署hadoop分布式文件系统
一、实战环境
系统版本:CentOS 58x86_64
JAVA版本:JDK-170_25
Hadoop版本:hadoop-220
192168149128namenode (充当namenode、secondary namenode和ResourceManager角色)
192168149129datanode1 (充当datanode、nodemanager角色)
192168149130datanode2 (充当datanode、nodemanager角色)
二、系统准备
1、Hadoop可以从Apache官方网站直接下载最新版本Hadoop22。官方目前是提供了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
127001localhostlocaldomain localhost
192168149128node1
192168149129node2
192168149130node3
(注 我们需要在namenode、datanode三台服务器上都配置hosts解析)
第二步:从namenode上无密码登陆各台datanode服务器,需要做如下配置:
在namenode 128上执行ssh-keygen,一路Enter回车即可。
然后把公钥/root/ssh/id_rsapub拷贝到datanode服务器即可,拷贝方法如下:
ssh-copy-id -i ssh/id_rsapub root@192168149129
ssh-copy-id -i ssh/id_rsapub root@192168149130
三、Java安装配置
tar -xvzf jdk-7u25-linux-x64targz &&mkdir -p /usr/java/ ; mv /jdk170_25 /usr/java/ 即可。
安装完毕并配置java环境变量,在/etc/profile末尾添加如下代码:
export JAVA_HOME=/usr/java/jdk170_25/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVE_HOME/lib/dtjar:$JAVE_HOME/lib/toolsjar:/
保存退出即可,然后执行source /etc/profile 生效。在命令行执行java -version 如下代表JAVA安装成功。
[root@node1 ~]# java -version
java version "170_25"
Java(TM) SE Runtime Environment (build 170_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 2325-b01, mixed mode)
(注 我们需要在namenode、datanode三台服务器上都安装Java JDK版本)
四、Hadoop版本安装
官方下载的hadoop220版本,不用编译直接解压安装就可以使用了,如下:
第一步解压:
tar -xzvf hadoop-220targz &&mv hadoop-220/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-sitexml 内容为如下:
<xml version="10">
<xml-stylesheet type="text/xsl"href=\'#\'" Put site-specific property overrides inthisfile -->
<configuration>
<property>
<name>fsdefaultname</name>
<value>hdfs://192168149128:9000</value>
</property>
<property>
<name>hadooptmpdir</name>
<value>/tmp/hadoop-${username}</value>
<description>A base forother temporary directories</description>
</property>
</configuration>
2、修改vi /data/hadoop/etc/hadoop/mapred-sitexml内容为如下:
<xml version="10">
<xml-stylesheet type="text/xsl"href=\'#\'" Put site-specific property overrides inthisfile -->
<configuration>
<property>
<name>mapredjobtracker</name>
<value>192168149128:9001</value>
</property>
</configuration>
3、修改vi /data/hadoop/etc/hadoop/hdfs-sitexml内容为如下:
<xml version="10"encoding="UTF-8">
<xml-stylesheet type="text/xsl"href=\'#\'" /name>
<value>/data/hadoop/data_name1,/data/hadoop/data_name2</value>
</property>
<property>
<name>dfsdatadir</name>
<value>/data/hadoop/data_1,/data/hadoop/data_2</value>
</property>
<property>
<name>dfsreplication</name>
<value>2</value>
</property>
</configuration>
4、在/data/hadoop/etc/hadoop/hadoop-envsh文件末尾追加JAV_HOME变量:
echo "export JAVA_HOME=/usr/java/jdk170_25/">> /data/hadoop/etc/hadoop/hadoop-envsh
5、修改 vi /data/hadoop/etc/hadoop/masters文件内容为如下:
192168149128
6、修改vi /data/hadoop/etc/hadoop/slaves文件内容为如下:
192168149129
192168149130
如上配置完毕,以上的配置具体含义在这里就不做过多的解释了,搭建的时候不明白,可以查看一下相关的官方文档。
如上namenode就基本搭建完毕,接下来我们需要部署datanode,部署datanode相对简单,执行如下操作即可。
1 fori in`seq 129130` ; doscp -r /data/hadoop/ root@192168149$i:/data/ ; done
自此整个集群基本搭建完毕,接下来就是启动hadoop集群了。
在过去,大数据处理主要是采用标准化的刀片式服务器和存储区域网络(SAN)来满足网格和处理密集型工作负载。然而随着数据量和用户数的大幅增长,基础设施的需求已经发生变化,硬件厂商必须建立创新体系,来满足大数据对包括存储刀片,SAS(串行连接SCSI)开关,外部SATA阵列和更大容量的机架单元的需求。即寻求一种新的方法来存储和处理复杂的数据,Hadoop正是基于这样的目的应运而生的。Hadoop的数据在集群上均衡分布,并通过复制副本来确保数据的可靠性和容错性。因为数据和对数据处理的操作都是分布在服务器上,处理指令就可以直接地发送到存储数据的机器。这样一个集群的每个服务器器上都需要存储和处理数据,因此必须对Hadoop集群的每个节点进行配置,以满足数据存储和处理要求。
Hadoop框架中最核心的设计是为海量数据提供存储的HDFS和对数据进行计算的MapReduce。MapReduce的作业主要包括从磁盘或从网络读取数据,即IO密集工作,或者是计算数据,即CPU密集工作。Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。因此运营团队在选择机器配置时要针对不同的工作节点选择合适硬件类型。一个基本的Hadoop集群中的节点主要有:Namenode负责协调集群中的数据存储,DataNode存储被拆分的数据块,Jobtracker协调数据计算任务,最后的节点类型是Secondarynamenode,帮助NameNode收集文件系统运行的状态信息。
在集群中,大部分的机器设备是作为Datanode和TaskTracker工作的。Datanode/TaskTracker的硬件规格可以采用以下方案:
4个磁盘驱动器(单盘1-2T),支持JBOD
2个4核CPU,至少2-25GHz
16-24GB内存
千兆以太网
Namenode提供整个HDFS文件系统的namespace管理,块管理等所有服务,因此需要更多的RAM,与集群中的数据块数量相对应,并且需要优化RAM的内存通道带宽,采用双通道或三通道以上内存。硬件规格可以采用以下方案:
8-12个磁盘驱动器(单盘1-2T)
2个4核/8核CPU
16-72GB内存
千兆/万兆以太网
Secondarynamenode在小型集群中可以和Namenode共用一台机器,较大的群集可以采用与Namenode相同的硬件。考虑到关键节点的容错性,建议客户购买加固的服务器来运行的Namenodes和Jobtrackers,配有冗余电源和企业级RAID磁盘。最好是有一个备用机,当 namenode或jobtracker 其中之一突然发生故障时可以替代使用。
目前市场上的硬件平台满足Datanode/TaskTracker节点配置需求的很多,,据了解深耕网络安全硬件平台多年的立华科技瞄准了Hadoop的发展前景,适时推出了专门针对NameNode的设备----双路至强处理器搭载12块硬盘的FX-3411,将计算与存储完美融合,四通道内存的最大容量可达到256GB,完全满足NameNode对于一个大的内存模型和沉重的参考数据缓存组合的需求。
同时在网络方面,FX-3411支持的2个PCI-E8的网络扩展,网络吞吐达到80Gbps,更是远远满足节点对千兆以太网或万兆以太网的需求。此外针对Datanode/TaskTracker等节点的配置需求,立华科技不仅推出了可支持单路至强E38核处理器和4块硬盘的标准品FX-3210,还有可以全面客制化的解决方案,以满足客户的不同需求。
Hadoop集群往往需要运行几十,几百或上千个节点,构建匹配其工作负载的硬件,可以为一个运营团队节省可观的成本,因此,需要精心的策划和慎重的选择。
/etc/ansible/hosts 文件如下:
将hosts文件下发到各服务器
将配置文件分发到各节点的 /etc/profiled/ 目录下。
javash
hadoopsh
hdfssh
分发
用ansible 创建 组、用户
NameNode
or
DataNode
or
配置文件 见 附件1
在active namenode上,以 hdfs 执行
在5台salve上,以 hdfs 执行
如果不提前创建/tmp目录,并配置权限,后面其他组件的运行会有问题。以 hdfs 执行:
给MapRed创建的staging directory。以 hdfs 执行:
在YARN上,以 yarn 执行
在5台salve上,以 hdfs 执行
在启动hdfs集群后启动
配置文件目录 /root/hadoop/conf
chronyconf
core-sitexml
core-site-mapredxml
core-site-ooziexml
hdfs-site-masterxml
hdfs-site-slavexml
yarn-sitexml
mapred-sitexml
hadoop-envsh
yarn-envsh
mapred-envsh
添加如下:
在namenode节点上
在yarn resourcemanager节点上
0条评论