Hadoop完全分布部署2018-01-30版本修改人修改记录修改时间V1.0王守奎编写2018/1/30目录背景4准备4辅助工具5自动同步 脚本【xcopy.sh】5查看节点进程脚本【xcall.sh】5运行环境配置6关闭防火墙6Hadoop基础安装7Hadoop完全分 布7Hadoop测试9常见错误10SecondaryNamenode配置10Hadoop数据存储位置配置11hadoop多目录配 置12Hadoop参考信息13考察本地文件13常见问题处理14背景大数据在实际的生产业务中,业务节点成百上千,但是基础的默认集群分 布只需要5台,本文重在介绍基础的集群配置,仅供参考。基本模型配置如下:准备准备5台服务器,承载Hadoop业务在每台节点服务器上配 置JVM环境变量各个节点服务器配置DNS映射,用于主机名和IP对应从NameNode节点配置到各个节点的SSH免密登录创建两个辅助 工具脚本,用于从NameNode(Master)节点查看各个主机的进程和同步文件辅助工具用于帮助主服务节点向从节点同步文件和批量在 从节点运行命令和查看结果。注:红色部分需要根据实际情况变更对应的主机名自动同步脚本【xcopy.sh】#!/bin/bashif [$#-lt1];thenechonoargsexit;fi#getfirstargumentsarg1= $1;cuser=`whoami`fname=`basename$arg1`dir=`dirname$arg1`if["$ dir"=="."];thendir=`pwd`echo$dirfiip=(2namenodedatanode1 datanode2datanode3);foriin${ip[@]}doecho......coping$arg1 to$i......if[-d$arg1];thenscp-r$arg1$cuser@$i:$direl sescp$arg1$cuser@$i:$dirfidone查看节点进程脚本【xcall.sh】#!/bin/bashi f[$#-lt1];thenechonoargsexit;fi$@echoip=(2namenodedat anode1datanode2datanode3);foriin${ip[@]}doecho......xcall $arg1from$i......ssh$i$@echodone注:xcall.sh脚本在执行jps命令时,需要jav a环境变量,可以在/usr/local/bin:/bin:/usr/bin三个任意一个目录设置一个jps的java软连接,例如:l n-s/usr/java/jdk1.8.0_111/bin/jpsjps运行环境配置方便脚本在主节点的任何位置都可以运行,将 脚本加入到$PATH路径中。将所编写文件放入/usr/local/bin中,并赋给执行权限,如下图:关闭防火墙在CentOS6 .x中,可以通过如下命令关闭防火墙:serviceiptablesstop#关闭防火墙服务chkconfigipt ablesoff#禁止防火墙开机自启,就不用手动关闭了Shell命令若用是CentOS7,需通过如下命令关闭(防火墙 服务改成了firewall):systemctlstopfirewalld.service#关闭firewalls ystemctldisablefirewalld.service#禁止firewall开机启动Hadoop基础安装1、在N ameNode主机创建/soft目录,并授权给hadoop用户,将安装介质上传至该目录2、以datanode1节点为例:scp- rl/soft/hadoop@datanode1:/soft从主节点开始同步安装介质,其余自行同步。3、安装同样方法同步环境 变量[/etc/profile]4、分别创建NameNode主机到其他五台主机的ssh免密登录(包括root用户和hadoop用户 )Hadoop完全分布在主节点NameNode中配置四大基础配置文件进入/soft/hadoop_etc/hadoop_fully /etc/hadoop目录guration>fs.defaultFShdfs://name node/hadoop.tmp.diralue>/home/hadoop/hadooplversion="1.0"?>ty>dfs.replication3-mapred-site.xml-->mapreduce. framework.nameyarntion>>yarn.resourcemanager.hostnamena menodeyarn.nodemanager.aux- servicesmapreduce_shufflenfiguration>修改slave文件进入/soft/hadoop_etc/hadoop_fully/etc/hadoop目录 ,在slave中配置从节点服务器对应的主机名(前提已经配置DNS映射),内容如下:datanode1datanode2datano de3分发配置文件将前两个修改的文件,分发到所有的从节点服务器。利用辅助工具xcopy.sh进行文件分发。将整个hadoop文件夹 分到所有的从节点,覆盖原有的配置xcopy.sh/soft/hadoop_etc/hadoop_fully/etc/hadoop 启动集群在主节点NameNode上,运行start-all启动集群查看集群启动状态利用辅助工具call.sh查看各个节点服务的启动 状态正常的状态如下:Hadoop测试Hadoop所有的命令均在主节点运行,将集群环境看成一个整体的文件系统【分布式】。$>ech o111>hello.txt$>hadoopfs-mkdir-p/usr/hadoop/data//创建目录$>h adoopfs-puthello.txt/usr/hadoop/data//上传$>hadoopfs–ls-R/ /查看常见错误dfsput操作报“Thereare0datanode(s)runningandnonode(s) areexcludedinthisoperation解决方案:(clusterIDs不兼容)停止DFS:stop-dfs .sh达到数据存储目录(默认):cd/tmp删除历史文件:rm-rfhspjettsystemdhadoop格 式化文件系统:Hadoopnamenode-format重启DFS:Start-dfs.sh检测:登录DFS的web控制台 :http://namenode:50070SecondaryNamenode配置在NameNode节点发生异常故障的场景下,S econdaryNamenode用于冷备NameNode元数据,用于还原。元数据可能不是完整的。在NameNode中配置如下,配 置完成分发所有的从节点,可以完成配置SN服务进程运行于哪个服务器节点。[hdfs-site.xml]e>dfs.namenode.secondary.http-addresssecondaryname node:50090Thesecondarynamenodehttpserv eraddressandport.Hadoop数据存储位置配置Hadoo p集群数据存储位置配置信息,存放于默认的tmp目录中主机重启数据会丢失。所以需要修改默认存储位置,下方红色值根据实际情况配置。参数 :hadoop.tmp.dir配置文件:[core-site.xml]修改值:hadoop.tmp.dir=/home/hadoo p/hadoophadoop.tmp.dir/home/hadoo p/hadoop分发core-site.xml停止服务、格式化、启动服务xcopycore -site.xmlstop-dfs.shhdfsnamenode-formatstart-dfs.shNamenode节点目 录结构如下:datanode节点目录结构如下:hadoop多目录配置1、namenode的本地目录配置成多个,则每个目录存放内容相 同,提高可靠性。[hdfs-site.xml]dfs.namenode.name.dir=file:///${hadoop.tmp .dir}/dfs/name1,${hadoop.tmp.dir}/dfs/name2//两个文件夹中的文件完全相同rty>dfs.namenode.name.dir${hadoop.tmp.dir}/ dfs/name1,${hadoop.tmp.dir}/dfs/name22、datano de也可以配置多个目录[hdfs-site.xml]dfs.datanode.data.dir=file:///${hadoop. tmp.dir}/dfs/data1,${hadoop.tmp.dir}/dfs/data2 dfs.datanode.data.dir${hadoop.tmp.dir}/dfs/data1,$ {hadoop.tmp.dir}/dfs/data2//不是副本,数据块存放在其中一个目 录下3、分发到各个从节点hadoop服务停止服务、格式化、启动服务xcopyhdfs-site.xmlstop-dfs.shh dfsnamenode-formatstart-dfs.shHadoop参考信息考察本地文件1、考察节点hadoop@name node:/tmp/hadoop-hadoop$find.../dfs./dfs/name./dfs/name/current ./dfs/name/current/seen_txid./dfs/name/current/VERSION./dfs/name/ current/fsimage_0000000000000000000./dfs/name/current/edits_inpro gress_0000000000000000001./dfs/name/current/fsimage_0000000000000 000000.md5./dfs/name/in_use.lockhadoop@namenode:/tmp/hadoop-hadoo p$catdfs/name/current/VERSION#ThuOct1919:10:01PDT2017names paceID=159194448clusterID=CID-6524a654-9587-4f23-b0fa-fe28205bbcc ecTime=0storageType=NAME_NODEblockpoolID=BP-1490552958-10.204.111 .139-1508465401080layoutVersion=-63同样方法考察其他节点...2、简单说明VERSION中的cl usterID都是一致的,storageType指定节点类型nn与2nn的clusterID、layoutVersion一致dn之间layoutVersion一致nn、2nn、dn之间clusterID一致fsimage...//静态数据,目录存放位置edits...//增删改查的日志md5//镜像文件的校验常见问题处理问:hdfsdfs-puthello.txt/user/hadoop/data上传文件报:hdfs.DFSClient:ExceptionincreateBlockOutputStreamjava.net.NoRouteToHostException:Noroutetohost答:1、查看/etc/host文件配置是否正确2、关闭节点的防火墙设置江湖一哥版权所有 |
|