Hadoop集群环境搭建

Hadoop简介

Hadoop优点

1.高可靠性:Hadoop按位存储和处理数据

2.高扩展性:Hadoop是在计算机集群中完成计算任务,这个集群可以方便的扩展到几千台

3.高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度快

4.高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配

5.低成本:Hadoop是开源的,集群是由廉价的PC机组成

Hadoop架构和组件

       Hadoop是一个分布式系统基础架构,底层是HDFS(Hadoop Distributed File System)分布式文件系统,它存储Hadoop集群中所有存储节点上的文件(64MB块),HDFS上一层是MapReduce引擎(分布式计算框架),对分布式文件系统中的数据进行分布式计算。

1.HDFS架构

NameNodeHadoop集群中只有一个NameNode,它负责管理HDFS的目录树和相关文件的元数据信息

Sencondary NameNode有两个作用,一是镜像备份,二是日志与镜像定期合并,并传输给NameNode

DataNode负责实际的数据存储,并将信息定期传输给NameNode

2.MapReduce架构(Hadoop0.23以后采用MapReduce v2.0或Yarn)

       Yarn主要是把jobtracker的任务分为两个基本功能:资源管理和任务调度与监控,ResourceManager和每个节点(NodeManager)组成了新处理数据的框架。

ResourceManager负责集群中的所有资源的统一管理和分配,接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各种应用程序(ApplicationMaster)。

NodeManager与ApplicationMaster承担了MR1框架中的tasktracker角色,负责将本节点上的资源使用情况和任务运行进度汇报给ResourceManager。

Hadoop三种运行方式:单节点方式(单台)、单机伪分布方式(一个节点的集群)与完全分布式(多台组成集群)

准备环境

1.Hadoop是用Java开发的,必须要安装JDK1.6或更高版本

2.Hadoop是通过SSH来启动slave主机中的守护进程,必须安装OpenSSH

3.Hadoop更新比较快,我们采用最新版hadoop2.3来安装

4.配置对应Hosts记录,关闭iptables和selinux

5.创建相同用户及配置无密码认证

第一步:Hadoop下载

下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gz

下载下来压缩包为hadoop-2.9.0.tar.gz。请使用tar -xzvf hadoop-2.9.0.tar.gz解压至/opt目录

第二步:安装前准备

  1. 修改每台服务器主机名
    vim /etc/hostname
  2. 修改防火墙
    systemctl stop firewalld.service          #停止firewall
    #systemctl disable firewalld.service     #禁止firewall开机启动
  3. 设置免密码登录(每台服务器必须重复以下步骤)

    A.生成秘钥:
    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa #每台先执行一遍

    B.3台的id_dsa.pub都追加至authorized_keys(先从第一台hadoop1开始)
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (#hadoop1上执行)
    scp ~/.ssh/authorized_keys hadoop2:~/.ssh/ 
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (#hadoop2上执行)
    scp ~/.ssh/authorized_keys hadoop3:~/.ssh/ 
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (#hadoop3上执行)
    scp ~/.ssh/authorized_keys hadoop1:~/.ssh/ 
    scp ~/.ssh/authorized_keys hadoop2:~/.ssh/


  4. 切记保持三台服务器的~/.ssh/known_hosts中的内容一致

  5. 配置环境变量
    vim /etc/profile

    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
    export HADOOP_HOME=/opt/hadoop-2.9.0
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    source /etc/profile

第三步:安装配置

需要修改 /opt/hadoop-2.9.0/etc/hadoop 中的5个配置文件(更多设置项可点击查看官方说明):

1、yarn-env.sh

2、hadoop-env.sh

3、slaves(hadoop1、hadoop2、hadoop3需要与上文中的node1、node2、node3命名一致,本文因为原图丢失,用node代替

4、core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/hadoop-2.9.0/tmp</value>
    </property>
    <property>
        <name>fs.trash.interval</name>
        <value>10080</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>

5、hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/hadoop-2.9.0/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/hadoop-2.9.0/data</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop1:9001</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property> 
        <name>dfs.datanode.max.xcievers</name>
        <value>4096</value> 
    </property> 
</configuration>

5、yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop1:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop1:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop1:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop1:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop1:8088</value>
    </property>
    <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>
</configuration>

6、mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop1:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop1:19888</value>
    </property>
</configuration>

将node1的/opt/hadoop-2.9.0打包并拷贝至node2和node3中

第四步:启动集群

  1. 格式化NameNode
    ./bin/hdfs namenode -format
    wKiom1MS1DSiAgo4AAXvONDFnvs364.jpg
  2. 启动集群
    启动hdfs:./sbin/start-dfs.sh
    启动yarn:./sbin/start-yarn.sh
  3. jps检查守护进程是否启动
  4. 查看集群状态
    ./bin/hdfs dfsadmin -report
    出现  Live datanodes (3):  信息表示集群建立成功

第五步:停止集群

停止hdfs:./sbin/stop-dfs.sh
停止yarn:./sbin/stop-yarn.sh

第六步:浏览器查看Yarn和HDFS

yarn界面: http://10.100.96.138:8088

hdfs界面: http://10.100.96.138:50070

问题及解决方案

  1. 报错:Permission denied, please try again.
    A.修改 /etc/ssh/sshd_config文件,将PermitRootLogin no改为yes
    B.检查免密登录生成的key是否拷贝成功
  2. 报错:AVA_HOME is not set and could not be found.
    A.配置/etc/profile环境变量:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
    B.检查hadoop-env.sh、yarn-env.sh中的环境变量:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值