1、Hadoop云计算平台搭建方案一、平台搭建概述 1.1总体思路针对于电网企业在营销服务领域展开的大数据分析处理,搭建Hadoop云计算平台进行海量数据存储,并作深层次加工、处理,挖掘出无法简单直观便可得到的新的模式,为电力企业的决策提供指导。平台采用Hadoop-2.2.0作为海量数据存储和分析工具,将其部署在4个物理计算机节点上,搭建Hadoop集群,其中1个节点作为master节点,其余3个作为slave节点。为了获取更好的稳定性,平台搭建在Linux系统(ubuntu-14.04-desktop-i386)环境下。 1.2软件列表软件描述版本VMware Workstation虚拟化软件
2、VMware Workstation 10.0.2.46408UbuntuLinux操作系统ubuntu-14.04-desktop-i386JDKJava的软件开发工具包jdkl.8.0_20Hadoop开源的云计算基础框架Hadoop-2.2.0HBase分布式数据存储系统Hbase-0.96.2ZookeeperHadoop可靠协调系统Zookeeper-3.4.5Sqoop数据迁移工具Sqoop-1.99.31.3平台搭建总流程和节点信息一览表在平台搭建前,给出实现的总流程图和节点信息一览表,从而对平台搭建过程和各节点信息有一个全局的认识,平台搭建总流程如下图所示。创建虚拟机maste
3、r,完成JDK、Hadoop等应用的安装和配置对虚拟机master进行克隆,得到的虚拟机分别作为slave1、slave2和slave3完成Zookeeper、HBase等其它分布式服务的部署,搭建Hadoop集群运行并测试Hadoop集群系统 各节点信息如下表所示:机器名IP地址用户名充当角色master172.19.17.102hadoopJobTracker、Namenodeslave1172.19.17.104hadoopTaskTracker、Datanodeslave2172.19.17.105hadoopTaskTracker、Datanodeslave3172.19.17.10
4、6hadoopTaskTracker、Datanode二、基础平台的搭建步骤此次大数据存储和处理平台的搭建,需要4台物理节点来部署Hadoop平台环境。我们使用虚拟机软件VMware Workstation创建4台虚拟机,承载平台搭建工作。另外,由于对4台虚拟机的配置大部分是相同的,所以利用VMware Workstation的克隆功能,可以减少部署的工作量。2.1安装虚拟机软件VMware Workstation首先在4台PC机器上均安装虚拟化软件VMware Workstation,并输入相应的序列号。2.2在master节点上安装Linux系统Ubuntu在设定为master PC节点上
5、首先安装Linux系统(版本为ubuntu-11.04-desktop-i386),在安装过程中为提高后期安装软件的兼容性和稳定性,在系统语言上选择英语。创建用户名为“hadoop”的普通用户,设置统一的密码。安装完成后将系统的terminal命令窗口调出来,以便使用。同时,为实现虚拟机的Ubuntu系统与本机的Windows系统之间方便快捷的文字复制粘贴以及物理主机系统与虚拟机系统相互拖放文件进行共享,需要安装VMare Tools工具,具体操作如下:启动虚拟机,进入Ubuntu系统,在VM菜单栏“虚拟机(M)”的下拉菜单点击“安装VMare Tools(T)”后,会弹出一个“VMare T
6、ools”文件夹,里面包含VMare Tools的安装包VMwareTools-9.6.2-1688356.tar.gz,将该安装包拷贝到/home/hadoop目录下,输入命令进行解压安装:tar xzvf VMwareTools-9.6.2-1688356.tar.gz此时在/home/hadoop/目录下产生vmware-tools-distrib文件夹,进入该目录,通过在terminal终端输入相应命令,运行vmware-install.pl脚本:cd /home/hadoop/vmware-tools-distrib /进入目录sudo ./ vmware-install.pl /执
7、行vmware-install.pl脚本按提示多次“回车”直至显示安装成功的信息,再重启系统即可。在完成上述操作后,为保障Hadoop集群各节点之间的无障碍通信,需关闭系统防火墙。在重启系统后,在terminal终端输入命令:sudo ufw disable当显示“Firewall stopped and disable on system startup”时表示防火墙已关闭,若后续服务部署过程中机器重启无法实现节点之间的相互通信,可尝试检查防火墙是否关闭。2.3 master节点的JDK安装与配置由于Hadoop底层实现是用JAVA语言编写的,因此它的运行离不开JAVA运行环境(JRE)的支
8、持,这就需要JDK。JDK有多个更新版本,安装过程大致相同,这里选择安装最近更新的版本jdkl.8.0_20。先将安装文件jdk-8u20-linux-i586.gz拷贝到master节点的目录/home/hadoop/下,在终端输入命令:tar xzvf jdk-8u20-linux-i586.gz进行解压安装,此时会产生文件夹“jdk1.8.0_20”,所得的JDK安装路径为“/home/hadoop/jdk1.8.0_20”。安装结束后打开/etc/profile文件,配置JDK的class path:在terminal终端键入命令:sudo gedit /etc/profile打开pr
9、ofile文件,在文件末尾加上以下语句:#set java environmentexport JAVA_HOME=/home/hadoop/jdk1.8.0_20export JRE_HOME=/home/hadoop/jdk1.8.0_20/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH / /home/hadoop/是hadoop文件夹所在路径,不可照抄,要以实际路径为准保存之后,在terminal终端输入命令:sourc
10、e /etc/profile使其生效。并键入命令java version查看是否配置成功,若出现如下信息,则表示java环境变量配置成功。java version 1.8.0_20Java(TM) SE Runtime Environment (build 1.8.0_20-b26)Java HotSpot(TM) Client VM (build 25.20-b23, mixed mode)注:以上灰色背景标注的文字表示的Linux命令,红色字体颜色标注的文本表示的需要写入的Hadoop环境配置文件中的信息,绿色字体颜色标注的小5号文本表示注释,下同2.4 master节点的hadoop安装
11、与配置Hadoop的安装是Hadoop平台搭建的关键步骤,将从http:/hadoop.apache.org下载的安装包hadoop-2.2.0.tar.gz拷贝到master节点目录/home/hadoop/下,进行解压安装,输入命令:tar xzvf hadoop-2.2.0.tar.gz安装完成后配置环境变量:在系统文件/etc/profile以及Hadoop的安装目录/home/hadoop/hadoop-2.2.0文件夹下的多个文件添加相应的配置信息。2.4.1 添加环境变量打开/etc/profile文件,在terminal终端键入命令:sudo gedit /etc/profil
12、e调出profile文件,在文件末尾加上:# set hadoop environmentexport HADOOP_HOME=/home/hadoop/hadoop-2.2.0export PATH=$HADOOP_HOME/bin:$PATHexport PATH=$HADOOP_HOME/sbin:$PATH然后保存,在终端键入命令source /etc/profile使其生效。异常处理1:问题:保存添加的环境变量并使其生效后,terminal可能会出现如下警告:(gedit:2949): Gtk-WARNING *: Attempting to set the permissions
13、of /root/.local/share/recently-used.xbel, but failed: No such file or directory(gedit:2949): Gtk-WARNING *: Attempting to store changes into /root/.local/share/recently-used.xbel, but failed: Failed to create file /root/.local/share/recently-used.xbel.MN6R3V: No such file or directory(gedit:2949): G
14、tk-WARNING *: Attempting to set the permissions of /root/.local/share/recently-used.xbel, but failed: No such file or directory解决方法:只需直接在终端中输入命令:sudomkdir-p/root/.local/share/,创建警告信息中所提示的目录即可。若无视警告重启ubuntu后将会出现以下情况:输入密码无法进入系统,一直处于输入密码后又跳转回输入密码的界面。此时的解决方法是:在输入密码界面同时按下alt+ctrl+F2进入ubuntu命令模式,并使用root用户
15、及对应密码登陆系统,然后键入:/usr/bin/vi /etc/profile打开etc/profile文件,找到最近在末尾加上的hadoop配置文件,按delete键删除这些行,然后键入命令:wq!(注意此处有冒号,不可省略)保存文件。然后同时按下ctrl+alt+del重启系统即可使系统恢复正常登陆,然后按照上述方法重新配置。2.4.2 目录设置在普通用户hadoop下创建hadoop的数据存储目录(若使用root用户创建上述文件夹则会因权限问题导致无法向这些文件夹中写入并读取数据),可自行选择数据存储的路径,我们选择在/home/hadoop/文件夹下创建dfs和tmp作为数据存储与交换
16、的目录,并在dfs文件夹下创建name和data两个子文件夹。分别执行命令:mkdir /home/hadoop/dfs/name /创建/home/hadoop/下dfs的子文件夹namemkdir /home/hadoop/dfs/data /创建/home/hadoop/下dfs的子文件夹datamkdir /home/hadoop/tmp /创建/home/hadoop/tmp2.4.3 /home/hadoop/hadoop-2.2.0/etc/hadoop下配置文件的修改接下来在/home/hadoop/hadoop-2.2.0/etc/hadoop目录下需要修改以下文件的内容:
17、在slaves文件下分别写入三个slave节点的名称,完成节点信息配置,并分别通过对hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、yarn-env.sh等文件分别进行Hadoop核心文件配置、HDFS配置、Mapreduce配置和Yarn配置。对/home/hadoop/hadoop-2.2.0/etc/hadoop文件夹下的几个文件做一定的修改,配置每个文件时先单击文件右键,选择“open with text editor”方式打开,按照以下方式修改,需要配置的文件如下:(1)配置hadoop-
18、env.sh文件,打开该文件,检索 “#export JAVA_HOME=$JAVA_HOME”文本,在该语句的下一行添加: export JAVA_HOME=/home/hadoop/jdk1.8.0_20这样配置的目的是为Hadoop的守护进程设置环境变量,让Hadoop能够获取到JDK服务的支持。(2)配置slaves文件,打开该文件,将其内容修改为slave1、slave2、slave3。文件名打开后,将其内容修改为:slavesslave1slave2slave3(3)配置core-site.xml文件,打开该文件,在文件末尾添加以下语句。文件名打开文件后,在其末尾添加语句:core
19、-site.xml fs.defaultFS hdfs:/172.19.17.102:9000 io.file.buffer.size 131072 hadoop.tmp.dir file:/home/hadoop/tmp Abase for other temporary directories. hadoop.proxyuser.tan.hosts * hadoop.proxyuser.tan.groups * (4)配置hdfs-site.xml文件,打开该文件,在文件末尾添加以下语句。文件名打开文件后,在其末尾添加语句:hdfs-site.xml dfs.namenode.second
20、ary.http-address 172.19.17.102:9001 dfs.namenode.name.dir file:/home/hadoop/dfs/name dfs.datanode.data.dir file:/home/hadoop/dfs/data dfs.replication 4 dfs.webhdfs.enabled true 注意:需要在hdfs-site.xml中配置dfs.replication属性时,dfs.replication属性指定HDFS中文件块复制的份数,其默认值为3,当datanode节点少于3台便会报错。在一般情况下,当其属性值为3的时候,HDFS
21、的部署策略是在本地机柜中一个节点放置一个备份,在本地机柜的不同结点再放置一个备份,然后再在另一个机柜中的一个结点放置一个备份 。(5)配置mapred-site.xml文件。事实上在进行配置之前,mapred-site.xml文件默认并不存在,需要首先将该目录下的mapred-site.xml.template文件进行复制,并重命名为mapred-site.xml,接下来打开mapred-site.xml,添加以下语句。文件名打开文件后,在其末尾添加语句:mapred-site.xml mapreduce.framework.name yarn mapreduce.jobhistory.add
22、ress 172.19.17.102:10020 mapreduce.jobhistory.webapp.address 172.19.17.102:19888 (6)配置yarn-site.xml文件,打开该文件,在文件末尾添加以下语句。文件名打开文件后,在其末尾添加语句:yarn-site.xml yarn.nodemanager.aux-servicesmapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandler yarn.res
23、ourcemanager.address 172.19.17.102:8032 yarn.resourcemanager.scheduler.address 172.19.17.102:8030 yarn.resourcemanager.resource-tracker.address 172.19.17.102:8031 yarn.resourcemanager.admin.address 172.19.17.102:8033 yarn.resourcemanager.webapp.address 172.19.17.102:8088 (7)配置yarn-env.sh文件,打开该文件,检索“
24、# export JAVA_HOME=/home/y/libexec/jdk1.6.0/”语句,在该语句下一行添加: export JAVA_HOME=/home/hadoop/jdk1.8.0_20通过对上述文件的修改,完成对Hadoop的配置。事实上,配置过程并不复杂,一般而言,除了规定的端口、IP地址、文件的存储位置外,其他配置都不是必须修改的,可以根据需要决定是采用默认配置还是自行修改。还有一点需要注意的是以上配置都被默认为最终参数,这些参数都不可以在程序中被再次修改。2.5 Hadoop集群的部署与各节点的通信2.5.1 安装SSH服务通过建立SSH无密码互访,可以实现Hadoop虚
25、拟机群之间的无密码登录互访。在安装SSH服务之前,首先需要更新软件源,并保证每台机器上都安装了SSH服务器,且都能正常启动。更新软件源命令为:sudo apt-get update软件源更新完毕后,在terminal输入如下命令开始安装openssh-server:sudo apt-get install openssh-server输入如下命令,检查openssh-server是否成功安装:which ssh如显示/usr/bin/ssh表示ssh安装成功which sshd如显示/usr/bin/sshd表示sshd安装成功如果以上二者都成功显示,表示open-server安装成功2.5.
26、2 克隆虚拟机作为Slave节点将上面配置好的虚拟机作为master,关闭作为master的ubuntu系统,然后修改虚拟机的网络连接设置,改为“桥接模式”,即在master虚拟机主界面点击“虚拟机设置硬件网络适配器”,在弹出的对话的“网络连接”项目下选择“桥接模式(B)”此举的目的在于使主节点和各从节点都能连上网络,从而使各台机器之间能够互访。接下来对master进行克隆,得到slave1、slave2、slave3的雏形,即点击VM菜单下的“虚拟机管理克隆”,进入克隆虚拟机的向导界面,根据向导提示,在“克隆类型”引导界面选择“创建完整克隆”,具体设置如下图所示:然后输入被克隆的虚拟机名称,
27、先暂输入slave1,点击确认进行克隆,将克隆好的系统复制到除master之外的三台PC节点上,用虚拟机VMware识别并将其启动,并在虚拟机启动界面点击“虚拟机设置选项常规”设置中,分别修改虚拟机名称为slave1、slave2和 slave3,如下图所示。2.5.3 设置IP地址在Hadoop平台上,各个节点之间的互访是基于TCP/IP协议的,所以要为各个节点分配IP地址。在四个PC节点上,点击桌面右上角从左到右的第一个数据连接图标在下拉菜单中选择最后一项“Edit Connections”在弹出的“Network Connections”框中选择“Edit”,显示“Editing Eth
28、ernet connection1”框,点击“IPv4Settings”将弹出的Method选择框设置为Manual,然后添加IP地址。添加同一网关内的IP地址、子网掩码、默认网关,目的是让各个节点机器能够互访。需要注意的是在设置IP地址时,需要首先在DNS servers输入相应的IP地址,否则无法填写“Addresses”项内容。因此,我们将DNS服务器(DNS servers)地址设置为:202.96.128.166,接下来将master节点的IP地址(Address)设置为:172.19.17.102,子网掩码(Netmask)设置为:255.255.255.0,默认网关(Gatewa
29、y)设置为:172.19.17.1。用同样的方法,将虚拟机salve1的IP地址设置为:202.96.128.166(DNS服务器);172.19.17.104(IP地址);255.255.255.0(子网掩码);172.19.17.1(网关),将slave2的IP地址设置为:202.96.128.166(DNS服务器);172.19.17.105(IP地址);255.255.255.0(子网掩码);172.19.17.1(网关),将slave3的IP地址设置为:202.96.128.166(DNS服务器);172.19.17.106(IP地址);255.255.255.0(子网掩码);172
30、.19.17.1(网关)。2.5.4 修改机器名通过克隆得到的ubuntu系统有相同的机器名,所以要修改加载在各虚拟机中的系统名称,来区分不同的节点,以便后期操作。在master机器上打开etc/hostname文件,命令为:sudo gedit /etc/hostname将etc/hostname文件内容修改为master用同样的方法分别在刚刚克隆得到的slave1、slave2和slave3上,修改其机器名:将slave1的机器名修改为slave1将slave2的机器名修改为slave2将slave3的机器名修改为slave32.5.5修改hosts文件通过修改hosts文件可以实现机器名
31、和IP地址之间的映射,在master节点上,打开文件/etc/hosts,命令为:sudo gedit /etc/hosts将/etc/hosts文件修改为172.19.17.102 master172.19.17.104 slave1172.19.17.105 slave2 172.19.17.106 slave3用同样的方法,在slave1、 slave2和slave3机器上修改如上hosts文件,映射配置与master一致。配置完成后重启master和slave1、 slave2和slave3使其生效。2.5.6 建立SSH无密码互访通过建立SSH无密码互访,可以实现Hadoop虚拟机集
32、群之间的无密码登陆互访。首先在4台机器上均生成秘钥对,并将slave1、slave2和slave3分别所生成的公钥id_rsa.pub进行重命名后发送到master机器上,由master将自身所生成的公钥与其它三台slave节点发送过来的公钥合并到一个文件中,重新分发给三台slave节点。对于不同的机器执行对应的操作如下:(1)master生成密钥对ssh-keygen -t rsa / 按提示直接回车此时,在目录/home/hadoop/.ssh/(隐藏的文件夹)下生成两个文件id_rsa 和 id_rsa.pub(2)slave1生成密钥对,重命名公钥,并将其发送到maser在终端term
33、inal输入如下命令:ssh-keygen -t rsa / 按提示直接回车在目录/home/hadoop/.ssh/(隐藏的文件夹)下生成两个文件id_rsa 和 id_rsa.pub,并重命名公钥 id_rsa.pub为id_rsa_slave1.pub,执行命令:scp /.ssh/id_rsa_slave1.pub将重命名后的文件都复制到master机,命令如下:scp /.ssh/id_rsa_slave1.pub hadoopmaster:/home/hadoop/.ssh/(3)slave2生成密钥对,重命名公钥,并将其发送到maserslave2执行与slave1类似的命令:s
34、sh-keygen -t rsa / 按提示直接回车mv id_rsa.pub id_rsa_slave2.pub scp /.ssh/id_rsa_slave2.pub hadoopmaster:/home/hadoop/.ssh/(4)slave3生成密钥对,重命名公钥,并将其发送到maserslave3也执行与slave1类似的操作:ssh-keygen -t rsa / 按提示直接回车mv id_rsa.pub id_rsa_slave3.pub scp /.ssh/id_rsa_slave3.pub hadoopmaster:/home/hadoop/.ssh/(5)master合并
35、公钥,重新分发给各slave节点在master机器的/home/hadoop/.ssh/文件夹中重命名秘钥文件,命令如下:mv id_rsa.pub authorized_keys 然后把每台slave机器发过来的文件合并到authorized_keys,命令如下:cat id_rsa_slave1.pub authorized_keys cat id_rsa_slave2.pub authorized_keyscat id_rsa_slave3.pub authorized_keys最后把合成的authorized_keys发给每台slave机器:scp authorized_keys ha
36、doopslave1:/home/hadoop/.ssh/authorized_keysscp authorized_keys hadoopslave2:/home/hadoop/.ssh/authorized_keysscp authorized_keys hadoopslave3:/home/hadoop/.ssh/authorized_keys(6)节点间无密码互访测试在任意机器上输入命令访问另一台机器,命令如下:ssh slave1如果返回 ”Agent admitted failure to sign using the key“,不能连接到slave1,此时可输入命令:ssh-ag
37、ent使ssh-agent处于运行状态。再将id_rsa添加到ssh-agent中,命令为:ssh-add id_rsa2.6启动Hadoop2.6.1 启动HDFS(1)初始化namenode在运行Hadoop平台之前,要在master上格式化文件系统,建立HDFS。切换至hadoop用户,进入/home/hadoop/hadoop-2.2.0/bin,初始化Namenode,执行命令如下:cd /home/hadoop/hadoop-2.2.0/binhdfs namenode format / 初始化namenode 格式化会产生多条信息,其中倒数第三行如果出现:. Storage di
38、rectory /home/hadoop/hdfs/name has been successfully formatted,则说明格式化HDFS成功,初始化完成之后会自动的在/home/hdoop/hadoop-2.2.0/创建dfs/name/目录。(2)测试启动HDFS在hadoop用户下,启动namenode,执行命令:hadoop-daemon.sh start namenode;启动datanode,执行命令:hadoop-daemon.sh start datanode。当namenode与datanode均启动之后,可使用jps命令查看进程,命令如下: jps当同时看到下列进程
39、时,标明hadoop正常运行:3588 NameNode3692 DataNode3757 Jps 如上述进程启动过程正常,则可启动HFS。在hadoop用户下,切换至/home/hadoop/hadoop-2.2.0/sbin目录下,执行命令:cd /home/hadoop/hadoop-2.2.0/sbin执行脚本./start-dfs.sh,启动HDFS在上述目录下执行脚本文件start-dfs.sh,命令为:./start-dfs.sh,使用jps命令查看进程,终端显示:4177 SecondaryNameNode3588 NameNode3692 DataNode4285 Jps其中
40、master产生SecondaryNameNode和NameNode进程,slave节点产生DataNode进程。2.6.2 启动YARN在hadoop用户下,切换至/home/hadoop/hadoop-2.2.0/sbin目录下,执行命令:cd /home/hadoop/hadoop-2.2.0/sbin执行脚本./start-yarn.sh,启动YARN在terminal终端输入命令:./start-yarn.sh,执行脚本文件start-yarn.sh,使用jps命令查看master节点进程时,终端显示:4177 SecondaryNameNode4660 Jps3588 NameNo
41、de4411 ResourceManager3692 DataNode其中master产生ResourceManager、NameNode和SecondaryNameNode进程,同时输入jps命令在slave节点进行进程查看时终端显示:3329 DataNode3670 Jps3484 NodeManager可知slave节点上产生DataNode和NodeManager进程。异常处理2:问题:Hadoop启动发生异常,有些进程不能被启动。解决方法:执行命令./stop-dfs.sh、./ stop-yarn.sh或直接执行./ stop-all.sh命令关闭进程后,清空/home/hadoop/dfs和 /home/hadoop/dfs文件夹中的数据,并重新执行格式化,命令如下:rm -rf /home/hadoop/dfs/rm -rf /home/hadoop/tmphdfs namenode format异常处理3:问题:slave 节点 DataNode 无法启动。解决方法:a、系统防火墙没有关闭:执行命令sudo ufw disable关闭防火墙;b、所有节点 hosts 链