Hadoop以及伪分布式+完全分布式的搭建

一、概述

  1. Hadoop是Apache提供的一套开源的、可靠的、可扩展(伸缩)的、用于进行分布式存储和计算的框架
  2. Hadoop的版本非常混乱

二、发展历程

  1. 创始人:Doug Cutting和Mike Caferalla
  2. 在2002年,Doug和Mike设计一套搜索引擎Nutch,爬取了全网的10亿个网页的数据
  3. 在2003年,Google发表了一篇论文(GFS)阐述了分布式存储的原理,但是Google并没有公开这个框架,Doug根据这篇论文设计实现了NDFS(Nutch Distributed File System)
  4. 在2004年,Google发表了一篇论文阐述了分布式计算的原理,Doug根据这篇论文设计实现了MapReduce
  5. 在Nutch0.8版本的时候,将NDFS和MapReduce从Nutch中分离出来形成了Hadoop,将NDFS更名为HDFS
  6. 在2007年,Doug携带Hadoop入职了Yahoo!
  7. Doug在雅虎工作期间,主持设计了HBase、Pig等框架
  8. Yahoo将Hadoop等框架贡献给了Apache

三、模块

  1. Hadoop Common:基本模块,用于支持其他模块
  2. Hadoop Distributed Filesytem:分布式存储框架
  3. Hadoop Yarn:任务调度和集群资源管理
  4. Hadoop MapReduce:分布式计算
  5. Hadoop Ozone:对象存储
  6. Hadoop submarine:机器学习引擎

四、版本

  1. Hadoop1.0:Common、HDFS、MapReduce
  2. Hadoop2.0:Common、HDFS、MapReduce、Yarn。Hadoop2.0和Hadoop1.0不兼容
  3. Hadoop3.0:Common、HDFS、MapReduce、Yarn、Ozone,最新的版本中包含了Submarine

Hadoop伪分布式搭建

  1. 关闭防火墙
    service iptables stop
    chkconfig iptables off
  2. 需要修改主机名,要求主机名中没有_和-
    vim /etc/sysconfig/network
    修改HOSTNAME选项,例如
    HOSTNAME=hadoop01
    保存退出,重新生效
    source /etc/sysconfig/network
  3. 将IP和主机名进行映射:
    vim /etc/hosts
    添加IP 主机名,例如:
    192.168.245.130 hadoop01
    保存退出
  4. 重启
    reboot
  5. 产生密钥
    ssh-keygen
    免密互通
    ssh-copy-id root@hadoop01
    云主机密码:tarena2017Up;
  6. 安装JDK
  7. 下载并且解压Hadoop
    wget http://bj-yzjd.ufile.cn-north-02.ucloud.cn/hadoop-2.7.1_64bit.tar.gz
    tar -xvf hadoop-2.7.1_64bit.tar.gz
  8. 进入hadoop安装的目录的etc/hadoop目录下
    cd hadoop-2.7.1/etc/hadoop
  9. 修改hadoop-env.sh
    vim hadoop-env.sh
    修改:
    export JAVA_HOME=/home/presoftware/jdk1.8
    export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
    保存退出,并且重新生效
    source hadoop-env.sh
  10. 编辑core-site.xml
    vim core-site.xml
    添加:

    fs.defaultFS
    hdfs://hadoop01:9000


    hadoop.tmp.dir
    /home/software/hadoop-2.7.1/tmp
  11. 编辑hdfs-site.xml
    vim hdfs-site.xml
    添加:

    dfs.replication
    1
  12. 复制mapred-site.xml.template
    cp mapred-site.xml.template mapred-site.xml
    编辑mapred-site.xml
    vim mapred-site.xml
    添加:

    mapreduce.framework.name
    yarn
  13. 编辑yarn-site.xml
    vim yarn-site.xml
    添加:

    yarn.resourcemanager.hostname
    hadoop01


    yarn.nodemanager.aux-services
    mapreduce_shuffle
  14. 编辑slaves文件
    vim slaves
    添加主机名,例如:
    hadoop01
  15. 配置环境变量
    vim /etc/profile
    添加:
    export HADOOP_HOME=/home/software/hadoop-2.7.1
    export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
    保存退出,并且重新生效
    source /etc/profile
  16. Hadoop第一次启动之前需要格式化:
    hadoop namenode -format
  17. 启动Hadoop
    start-all.sh
    如果启动成功,则通过jps命令,能查看到6个进程:
    Jps
    NameNode
    DataNode
    SecondaryNameNode
    ResourceManager
    NodeManager
    可以通过50070以及8088端口访问

错误:
1. 如果少了XXXNode,那么修改core,hdfs,删除hadoop-2.7.1/tmp,然后重新格式化重新启动
2. 如果XXXXManager,那么修改mapred,yarn,重新启动
3. 命令找不到,hadoop-env.sh配置错误,profile配置错了

完全分布式搭建

***** 全部三个节点 *****

  1. 关闭防火墙
    service iptables stop
    chkconfig iptables off
  2. 修改主机名,Hadoop主机名中不能出现_和-
    vim /etc/sysconfig/network
    修改其中的HOSTNAME属性的值,例如HOSTNAME=hadoop01
    修改完成之后保存退出,然后需要重新生效
    source /etc/sysconfig/network
  3. 需要将主机名和ip进行映射
    vim /etc/hosts
    添加主机名 IP映射,例如:
    192.168.245.130 hadoop01
    192.168.245.131 hadoop02
    192.168.245.132 hadoop03
    注意,改完之后,三个节点中的hosts文件的内容应该是一样的
  4. 重启
    reboot
  5. 三个节点之间配置免密互通
    产生密钥
    ssh-keygen
    拷贝到三个节点上,注意是三个节点每一个节点都需要执行这三句话,保证任意两个节点之间能够免密互通
    ssh-copy-id root@hadoop01
    ssh-copy-id root@hadoop02
    ssh-copy-id root@hadoop03
    云主机密码:tarena2017Up;
    最好三个节点都ssh连接一下看一下是否需要密码,如果连接不需要密码就能登录,那就表示免密配置成功
  6. 安装JDK
  7. 安装Zookeeper
    ***** 现在第一个节点上配置,然后拷贝给其他节点 *****
  8. 将伪分布式重命名
    mv hadoop-2.7.1 hadoop-standalone
  9. 解压Hadoop的安装包
    tar -xvf hadoop-2.7.1_64bit.tar.gz
  10. 进入安装目录的子目录
    cd hadoop-2.7.1/etc/hadoop/
  11. 修改hadoop-env.sh
    vim hadoop-env.sh
    修改JAVA_HOME和HADOOP_CONF_DIR
    export JAVA_HOME=/home/presoftware/jdk1.8
    export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
    保存退出之后重新生效
    source hadoop-env.sh
  12. 修改core-site.xml
    vim core-site.xml
    添加:     fs.defaultFS                     hdfs://ns     hadoop.tmp.dir     /home/software/hadoop-2.7.1/tmp       ha.zookeeper.quorum     hadoop01:2181,hadoop02:2181,hadoop03:2181  
  13. 修改hdfs-site.xml
    vim hdfs-site.xml
    添加:     dfs.nameservices     ns     dfs.ha.namenodes.ns     nn1,nn2     dfs.namenode.rpc-address.ns.nn1     hadoop01:9000     dfs.namenode.http-address.ns.nn1     hadoop01:50070     dfs.namenode.rpc-address.ns.nn2     hadoop02:9000     dfs.namenode.http-address.ns.nn2     hadoop02:50070     dfs.namenode.shared.edits.dir     qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns     dfs.journalnode.edits.dir     /home/software/hadoop-2.7.1/tmp/journal     dfs.ha.automatic-failover.enabled     true     dfs.client.failover.proxy.provider.ns     org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider     dfs.ha.fencing.methods     sshfence     dfs.ha.fencing.ssh.private-key-files     /root/.ssh/id_rsa          dfs.namenode.name.dir         file:///home/software/hadoop-2.7.1/tmp/hdfs/name                   dfs.datanode.data.dir         file:///home/software/hadoop-2.7.1/tmp/hdfs/data                   dfs.replication         3                                                                                       dfs.permissions         false       
  14. 编辑mapred-site.xml
    cp mapred-site.xml.template mapred-site.xml
    vim mapred-site.xml
    添加:
        
        mapreduce.framework.name    
        yarn    
  15. 编辑yarn-site.xml
    vim yarn-site.xml
    添加:     yarn.resourcemanager.ha.enabled     true     yarn.resourcemanager.ha.rm-ids     rm1,rm2     yarn.resourcemanager.hostname.rm1     hadoop01     yarn.resourcemanager.hostname.rm2     hadoop03     yarn.resourcemanager.recovery.enabled     true     yarn.resourcemanager.store.class     org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore     yarn.resourcemanager.zk-address     hadoop01:2181,hadoop02:2181,hadoop03:2181     yarn.resourcemanager.cluster-id     ns-yarn          yarn.nodemanager.aux-services         mapreduce_shuffle            yarn.resourcemanager.hostname     hadoop03
  16. 编辑slaves - 这个文件是用于指定DataNode以及NodeManager的节点位置
    vim slaves
    添加三个节点的名字,例如
    hadoop01
    hadoop02
    hadoop03
  17. 需要将这个hadoop的安装目录拷贝给其他两个节点
    scp -r hadoop-2.7.1 root@hadoop02:/home/software/
    scp -r hadoop-2.7.1 root@hadoop03:/home/software/

  1. 三个节点需要配置环境变量
    vim /etc/profile
    在文件最后添加:
    export HADOOP_HOME=/home/software/hadoop-2.7.1
    export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
    保存退出之后需要重新生效
    source /etc/profile
  2. 三个节点都需要启动Zookeeper
    cd /home/software/zookeeper-3.4.7/bin
    sh zkServer.sh start
    sh zkServer.sh status
  3. 在第一个节点上格式化Zookeeper - 实际上就是在Zookeeper上去注册节点
    hdfs zkfc -formatZK
  4. 在全部三个节点上启动JournalNode
    hadoop-daemon.sh start journalnode
  5. 在第一个节点上格式化NameNode
    hadoop namenode -format
  6. 在第一个节点上启动NameNode
    hadoop-daemon.sh start namenode
  7. 在第二个节点上格式化NameNode
    hdfs namenode -bootstrapStandby
  8. 在第二个节点上启动NameNode
    hadoop-daemon.sh start namenode
  9. 在全部三个节点上启动DataNode
    hadoop-daemon.sh start datanode
  10. 在第一个节点以及第二节点上来启动故障切换进程
    hadoop-daemon.sh start zkfc
  11. 在第三个节点上来启动yarn
    start-yarn.sh
  12. 在第一个节点上来单独启动resourcemanager
    yarn-daemon.sh start resourcemanager
  13. 从第二次启动开始,只需要用start-all.sh即可

如果启动成功,则各个节点的进程分布如下:
第一个节点8个:
Jps
NameNode
DataNode
JournalNode
ResourceManager
NodeManager
DFSZKFailoverController
QuorumPeerMain
第二个节点7个:
Jps
NameNode
DataNode
JournalNode
NodeManager
DFSZKFailoverController
QuorumPeerMain
第三个节点6个:
Jps
DataNode
JournalNode
ResourceManager
NodeManager
QuorumPeerMain

如果发现少了节点,可以试着单独启动一次:
hadoop-daemon.sh start namenode/datanode/journalnode/zkfc
yarn-daemon.sh start resourcemanager/nodemanager

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值