Hadoop集群大数据平台搭建

1、Hadoop集群环境搭建配置

一、前言

Hadoop的搭建分为三种形式:单机模式、伪分布模式、彻底分布模式,只要掌握了彻底分布模式,也就是集群模式的搭建,剩下的两种模式天然而然就会用了,通常前两种模式通常用在开发或测试环境下,Hadoop最大的优点就是分布式集群计算,因此在生产环境下都是搭建的最后一种模式:彻底分布模式。html

二、硬件选择

须知:java

  1. 分布式环境中一个服务器就是一个节点
  2. 节点越多带来的是集群性能的提高
  3. 一个Hadoop集群环境中,NameNode,SecondaryNameNode和DataNode是须要分配不一样的节点上,也就须要三台服务器
  4. 在Hadoop运行做业完成时,History Server来记录历史程序的运行状况,须要独立一台服务器
  5. 第一台:记录全部的数据分布状况,运行进程:NameNode 
    第二台:备份全部数据分布状况,由于当前面的那台服务器宕机(平常所说的死机)时,可经过该服务器来恢复数据。因此,该服务器运行的程序就是:SecondaryNameNode 
    第三台:存储实际数据,运行的进程就是;DataNode 
    第四台:记录应用程序历史的运行情况。运行的程序就是:History Server。(可选) 
    因此说,至少三台。

三、集群环境各个服务配置

  1. 在Hadoop集群环境中,最重要的就是NameNode运行的服务器是整个集群的调度和协调工做,还有一个很重要的进程是资源管理(真正的协调整个集群中每一个节点的运行),因此配置要高于其余节点。 

四、软件选择

关于Hadoop集群环境软件的选择,无非就是围绕这个几个软件产品去选择:OS操做系统,Hadoop版本,JDK版本,Hive版本、MySQL版本等。node

五、节点配置信息的分配

 
提早规划出四台服务器用来搭建Hadoop集群,而后分别为其分配了机器名称、IP,IP须要设置为统一网段,可根据使用的状况,进行动态调整的。 
另外说明:搭建了两台Ubuntu的服务器来单独安装MySQLServer,搭建了一个主从模式,Ubuntu是一个界面友好的操做系统,这里和Hadoop集群分离的目的是由于Mysql数据库是比较占内存资源的,因此咱们单独机器来安装,固然,MySQL并非Hadoop集群所须要的,二者没有必然的关系,这里搭建它的目的就为了后续安装Hive来分析数据应用的,而且咱们能够在这个机器里进行开发调试,固然Window平台也能够,毕竟咱们使用Windows平台是最熟练的。(hive是基于Hadoop的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,能够将sql语句转换为MapReduce任务进行运行。 其优势是学习成本低,能够经过类SQL语句快速实现简单的MapReduce统计,没必要开发专门的MapReduce应用,十分适合数据仓库的统计分析。)web

2、Hadoop集群环境安装

安装前需明了:sql

  1. 将Hadoop集群中的主节点分配2GB内存,而后剩余的三个节点都是1GB配置。
  2. 全部的节点存储都设置为50GB

一、CentOS安装

  1. 首先须要在VMWare中建立一个新的计算机,而后指定CentOS的镜像路径和用户名和密码。
  2. 指定当前虚拟机操做系统的存储大小(50GB)和内存大小(2GB)。
  3. 完成安装
  4. 至此,咱们已经成功的安装上了CentOS操做系统,而后安装的过程当中顺便建立了一个新用户Hadoop,这个帐户就是咱们后面安装Hadoop集群环境所使用的帐号。
  5. 咱们登陆到CentOS操做系统,而后为了后续节点识别,要改计算机名。Master.Hadoop,而后重启。(不知理解是否有误)
    • 切换到root用户
    • 编辑/etc/sysconfig/network文件:vi /etc/sysconfig/network 
    • 保存该文件,重启计算机(reboot)
    • 查看是否生效:hostname
  6. 设置固定IP(验证咱们当前虚拟机是否能上网,IP是否能成功配置。),而后配置Host文件(添加集群对应ip与节点名)。(还有要改桥接模式(B):直接链接物理网络。如今用的是虚拟机,可是把它当成物理机同样,也给插上网线,链接到本地的网络中去。固然,若是选择这种方式的前提是要保证局域网的网段和以前规划的IP是一致的,必须都是192.168.1.* 这种网段,这样的目的就是宿主机和咱们的虚拟机可以直接通讯,那就意味这主机能联网,咱们的虚拟机就能联网。)
    • 固定IP设置:首先配置DNS,对/etc/resolv.conf 文件进行修改或查看 
    • 配置固定IP地址:修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件 
    • 重启网络:/etc/init.d/network restart或service network restart 
      修改为功: 
    • ping通网络。
    • 修改host文件 
    • 重启服务器

二、Hadoop安装与配置

  1. 下载Hadoop安装包,而后进入Hadoop集群的搭建工做。 
    把jdk和Hadoop包下载或上传到/home/hadoop/Downloads/下 
     
    Hadoop环境的配置分为两步:一、Java环境配置;二、Hadoop配置。由于Hadoop就是Java语言编写的,因此必定要先配置好Java环境。
    • jdk的安装与配置: 
      通常将安装的程序存到/usr目录下,因此建立Java目录:mkdir /usr/java, 
      更改权限chown hadoop:hadoop /usr/java/, 
      查看ll /usr 
      更改系统的环境变量vim /etc/profile 
      添加脚本
      # set java environment
      export JAVA_HOME=/usr/java/jdk1.8.0_121
      export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
      将解压好的jdk移到/usr/java目录中:cp -r jdk1.8.0_121 /usr/java/ 
      查看版本:java -version
    • Hadoop的安装与基本配置: 
      与Jdk配置相似,--/usr目录下,建立hadoop目录mkdir /usr/hadoop 
      --拷贝解压后的hadoop安装包cp -r hadoop-2.6.4 /usr/hadoop 
      --赋权给Hadoop用户chown hadoop:hadoop /usr/hadoop/ 
      --查看确认ll /usr/ 
      对几个关键的文件进行配置: 
      转到目录:cd /usr/hadoop/hadoop-2.6.4/ 
      配置第一个文件vim etc/hadoop/core-site.xml
      <configuration>
      <!-- HDFS file path -->
      <!-- HDFS默认的链接地址 -->
      <property>
       <name>fs.defaultFS</name>
       <value>hdfs://192.168.1.50:9000</value>
       </property>
      <!-- 流文件的配置大小,默认是4K过小了,这里将这个值改的大 -->
       <property>
       <name>io.file.buffer.size</name>
       <value>131072</value>
       </property>
      <!--生成临时结果的配置路径,须要建立目录tmp-->
       <property>
       <name>hadoop.tmp.dir</name>
       <value>file:/usr/hadoop/hadoop-2.6.4/tmp</value>
       <description>Abasefor other temporary directories.</description>
       </property>
      </configuration>
      建立目录mkdir tmp 
      配置第二个文件vim etc/hadoop/hdfs-site.xml
      <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value>192.168.1.50:9001</value>
       </property>
       <property>
       <name>dfs.namenode.name.dir</name>
       <value>file:/usr/hadoop/hadoop-2.6.4/dfs/name</value>
       </property>
       <property>
       <name>dfs.datanode.data.dir</name>
       <value>file:/usr/hadoop/hadoop-2.6.4/dfs/data</value>
       </property>
       <property>
       <name>dfs.replication</name>
       <value>1</value>
       </property>
       <property>
       <name>dfs.webhdfs.enabled</name>
       <value>true</value>
       </property>
      文件解释: 
      建立目录:mkdir dfsmkdir dfs/namemkdir dfs/data 
      配置第三个文件:cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml由于在这里Hadoop已经提供了一个模板,直复制建立,而后修改此文件:vim etc/hadoop/mapred-site.xml
      <!-- 第一个就是制定当前Hadoop的并行运行计算架构,这里为yarn,第二个就是Job运行的历史记录Server,第三个就是历史运行记录的Web服务器。 -->
      <configuration>
       <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
       </property>
       <property>
       <name>mapreduce.jobhistory.address</name>
       <value>192.168.1.50:10020</value>
       </property>
       <property>
       <name>mapreduce.jobhistory.webapp.address</name>
       <value>192.168.1.50:19888</value>
       </property>
      </configuration>
      配置第四个文件:vim etc/hadoop/yarn-site.xml
      <!--后续的调优会一直围绕这个文件进行-->
      <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
       </property>
       <property>
       <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
       <value>org.apache.hadoop.mapred.ShuffleHandler</value>
       </property>
       <property>
       <name>yarn.resourcemanager.address</name>
       <value>192.168.1.50:8032</value>
       </property>
       <property>
       <name>yarn.resourcemanager.scheduler.address</name>
       <value>192.168.1.50:8030</value>
       </property>
       <property>
       <name>yarn.resourcemanager.resource-tracker.address</name>
       <value>192.168.1.50:8035</value>
       </property>
       <property>
       <name>yarn.resourcemanager.admin.address</name>
       <value>192.168.1.50:8033</value>
       </property>
       <property>
       <name>yarn.resourcemanager.webapp.address</name>
       <value>192.168.1.50:8088</value>
       </property>
      配置Hadoop的jdk路径,不指定是不能运行的,hadoop-env.sh 和 yarn-env.sh 在开头添加以下java环境变量:export JAVA_HOME=/usr/java/jdk1.8.0_73 
      vim etc/hadoop/hadoop-env.sh 
       
      vim etc/hadoop/yarn-env.sh 
       
      由于全部Hadoop用户都有执行权限,因此: 
      chown -R hadoop:hadoop /usr/hadoop/hadoop-2.6.4/

三、启动Hadoop

  • 格式化文件,来启动这个单节点的Hadoop集群
    1. Hadoop 分布式存储系统的HDFS格式化,这个只能在初始化系统的时候用一次,一次就行了,要不执行一次数据就丢失一次。bin/hadoop namenode -format运行结果: 
    2. Hadoop 集群进行启动验证:启动HDFS:sbin/start-dfs.sh而后查看jps进程: 
       
      而后,查看状态bin/hadoop dfsadmin -report 
       
      或者直接打开浏览器直接打开浏览器查看:http://192.168.10.87:50070/dfshealth.html#tab-overview 
    3. Hadoop 集群启动查看 
      启动Hadoop集群,而后查看其状态sbin/start-yarn.sh 
      用浏览器打开:http://192.168.10.87:8088/cluster 

3、Hadoop集群彻底分布式坏境搭建

上一部分是单节点的安装,工做已经完成了一半,下面进行的是彻底分布式的环境搭建 
为了减小配置时间,直接对上一节点进行克隆 
节点基本信息: 
 
总共须要5台服务器来使用,四台用来搭建Hadoop集群使用,另一台(可选)做为MySQL等外围管理Hadoop集群来使用。在开发的时候通常也是直接经过链接外围的这台机器来管理Hadoop整个集群数据库

一、VMWare克隆节点和配置

  1. 首先须要在VMWare中将以前建立的单实例的计算机进行克隆。 
    注意:在克隆过程当中必定要选择克隆一个完整的而不是建立连接克隆,也必定不要选择现有的快照。
  2. 配置各个Slave节点的机器信息。 
    (1)主节点Master的CUP处理器设置成多路多核,这里设成4,其余节点设成1 
    (2)手动更改各个从节点的计算机名和Hosts文件(必须!)vim /etc/sysconfig/network 
    vim /etc/hosts
     
     
    配置完以后,重启完各个机器以后,确保各个节点之间能够ping 通(重点!!!)

二、节点SSH无密码登陆配置

  1. 进行sshd的配置文件的修改,去掉默认注释,开启SSH验证功能(以root用户进行操做)vim /etc/ssh/sshd_config 
     
    将上面的这三行数据的注释“#”去掉进行,保存。这里记住了!全部的机器都要这么依次进行设置。RSAAuthentication是指开启SSH验证,PubkeyAuthetication是指能够经过公钥进行验证,AuthorizedkeysFile则指的的是公钥存放的位置。
  2. 重启该服务:/sbin/service sshd restart
  3. 用本机验证一下:ssh localhost这个时候会让你输入密码,是由于没有生成密钥,下面进行设置
    • 加工生成证书公私钥,分发到各个服务器(以Hadoop用户操做)在Master节点上生成Hadoop用户的公钥,而后将这个公钥分发给各个slave节点,而后这样在Master机器上就能够用Hadoop无密码登陆到各个salve机器上面了
    • ssh-keygen -t rsa -P '' 
      红框勾出的路径就是公钥和私钥生成的默认路径
    • 下一步就是将这个公钥复制到各个slave节点中去,远程文件的复制:scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/复制的公钥文件存在默认的路径“/home/hadoop/.ssh”scp ~/.ssh/id_rsa.pub hadoop@192.168.1.51:~/ 
    • 登陆salve01的机器将刚才生成的公钥加入的本地的权限验证组里面去cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 
    • 回到Master机器上面进行,ssh验证SSH <远程IP && 域名>在master机器上登陆slave01机器上实验下,看是否还须要进行密码输入ssh slave01.hadoop从Master机器上面无密码的登陆到Slave01机器上面,那么说明刚才的配置生效了。
    • 参照上面的步骤将各个Slave节点配置完成
    • 注意:在Master生成密钥只须要生成一次就能够了,不要再次生成!由于每次生成觉得着全部的节点都须要从新配置。
    • 参照上面的步骤将各个Slave节点SSH到Master机器(保证各个Slave节点可以无密码登陆Master机器,各个Slave子节点干完Master分配的任务以后,须要有权限反馈至Master) 
      注意:上面的步骤要必定完成验证,要不之后的Hadoop操做会很出现各类诡异的问题!!

三、Hadoop集群配置

    1. 配置Hadoop集群配置 
      将这个单节点的配置成一个真正的分布式集群,充分利用咱们刚才搭建的几台Server进行性能的最大发挥
    2. 首先进行slaves文件的配置,指定该集群的各个Slave节点的位置(以hadoop用户进行操做)(只须要在Master的机器上面进行就能够了)vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/slaves将各个Slave的IP或者机器名写入]![
    3. 更改hdfs-site.xml文件中的dfs.replication属性值为3(由于有另外3台虚拟机,记住:只能是奇数!)vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/hdfs-site.xml 
      (这里须要注意的是,全部的机器都要这样配置。)
    4. 启动Hadoop集群,验证是否成功 
      先来执行一个HDFS格式的命令(改为彻底分布式的集群,因此这里须要从新格式)bin/hadoop namenode -format
    5. 验证一下整个集群的HDFS是否正常可用,启动整个集群的HDFS,在Master机器上面,用hadoop用户操做start-dfs.sh 
       
      经过浏览器来查看整个集群的HDFS状态,地址为:http://192.168.1.50:50070 
       
    6. 验证一下整个集群的YARN分布式计算框架是否正常可用,启动Yarnstart-yarn.sh经过浏览器来查看整个集群的Hadoop集群状态,地址为:http://192.168.1.50:8088/ 
      可见当前的Hadoop集群已经存在四个正在运行的节点。
相关文章
相关标签/搜索