zoukankan      html  css  js  c++  java
  • 大数据2-Hadoop伪分布式+ZK+HDFS

    目录:

      1、hadoop介绍

      2、虚拟机配置

           3、zookeeper

      4、hdfs搭建

    大数据解决四大核心问题:

    1. 数据的存储(Big Data Storage),海量数据需要处理和分析,但前提是要进行有效的存储。Hadoop的诞生突破了传统数据文件系统的单机模式。HDFS使得数据可以跨越不同的机器与设备,并且用一个路径去管理不同平台上的数据。

    2. 数据的计算(Data Calculation),在数据有效存储的基础上,对数据的统计和分析本质上就是数据的计算。在大数据领域常见的计算工具有MapReduceSpark等。

    3. 数据的查询(Consensus Data),对大数据进行有效管理的核心指标是数据查询技术。其中NoSQL (Not Only SQL)应用较为广泛,能较有效解决数据的随机查询,其中就主要包括Hbase等。从本质而言,依旧是Hadoop模式下的数据查询。

    4. 数据的挖掘(Data mining),Hive数据仓库为数据的挖掘提供了基础,通过分类、预测、相关性分析来建立模型进行模式识别、机器学习从而构建专家系统。

    Hadoop之父

        大牛,他是LuceneNutch Hadoop等项目的发起人。是他,把高深莫测的搜索技术形成产品,贡献给普通大众;还是他,打造了在云计算和大数据领域里如日中天的Hadoop。他是某种意义上的盗火者(普罗米修斯盗火造福人类),他就是Doug Cutting

     

        Hadoop是项目的总称。主要是由HDFSMapReduce组成。HDFSGoogle File SystemGFS)的开源实现。MapReduceGoogle MapReduce的开源实现。

        Hadoop的诞生突破了传统数据文件系统的单机模式。使得数据可以跨越不同的机器与设备,并且用一个路径去管理不同平台上的数据。

        MapReduce的计算模型分为MapReduce两个过程。在日常经验里,我们统计数据需要分类,分类越细、参与统计的人数越多,计算的时间就越短,这就是Map的形象比喻,在大数据计算中,成百上千台机器同时读取目标文件的各个部分,然后对每个部分的统计量进行计算,Map就是负责这一工作的;而Reduce就是对分类计数之后的合计,是大数据计算的第二阶段。可见,数据的计算过程就是在HDFS基础上进行分类汇总。

        HDFS把节点分成两类:NameNodeDataNodeNameNode是唯一的,程序与之通信,然后从DataNode上存取文件。这些操作是透明的,与普通的文件系统API没有区别。

        MapReduce则是JobTracker节点为主,分配工作以及负责和用户程序通信。

        HDFSMapReduce实现是完全分离的,并不是没有HDFS就不能MapReduce运算。

        Hadoop也跟其他云计算项目有共同点和目标:实现海量数据的计算。而进行海量计算需要一个稳定的,安全的数据容器,才有了Hadoop分布式文件系统(HDFSHadoop Distributed File System)。

        HDFS通信部分使用org.apache.hadoop.ipc,可以很快使用RPC.Server.start()构造一个节点,具体业务功能还需自己实现。针对HDFS的业务则为数据流的读写,NameNode/DataNode的通信等。

        MapReduce主要在org.apache.hadoop.mapred,实现提供的接口类,并完成节点通信(可以不是hadoop通信接口),就能进行MapReduce运算。

    集群规划:

      

    主机名

    IP

    进程(jps)

    hadoop01

    192.168.163.129

    ZooKeeper(QuorumPeerMain)

    Hadoop

    HDFS

    Flume

    Hive

    hadoop02

    192.168.163.130

    ZooKeeper(QuorumPeerMain)

    hadoop03

    192.168.163.131

    ZooKeeper(QuorumPeerMain)

              

              

      子项目

          Hadoop Common: 0.20及以前的版本中,包含HDFSMapReduce和其他项目公共内容,从0.21开始HDFSMapReduce被分离为独立的子项目,其余内容为Hadoop Common

          HDFS: Hadoop分布式文件系统(Distributed File System) HDFS (Hadoop Distributed File System)

          MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API

          HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBaseAvro已经于20105月成为顶级 Apache 项目)

          Hive:数据仓库工具,由Facebook贡献。

          Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。

          Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的序列化机制。

          Pig: 大数据分析平台,为用户提供多种接口。

          AmbariHadoop管理工具,可以快捷的监控、部署、管理集群。

          Sqoop:于在HADOOP与传统的数据库间进行数据的传递。

     配置虚拟机

        HDFS由java编写,需要jdk支持

         docker官方文档要求必须运行在Linux kernel 3.8以上,所以需要安装在Centos7或者Ubantu系统上。

          yum install lrzsz      #安装上传下载组件

          uname –a       #检查当前Linux内核版本

            查询结果:Linux tdocker 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

         配置IP地址

           修改配置文件

            cd /etc/sysconfig/network-scripts #进入网络配置目录

            dir ifcfg* #找到网卡配置文件

            ifcfg-eno16777736  ifcfg-lo

            vi ifcfg-eno16777736

           配置文件内容

            TYPE=Ethernet

            BOOTPROTO=static #改成static,针对NAT

            NAME=eno16777736

            UUID=4cc9c89b-cf9e-4847-b9ea-ac713baf4cc8 

            DEVICE=eno16777736 

            ONBOOT=yes #开机启动此网卡 

            IPADDR=192.168.163.30 #固定IP地址 

            NETMASK=255.255.255.0 #子网掩码 

            GATEWAY=192.168.163.2 #网关和NAT自动配置的相同,不同则无法登录 

            DNS1=192.168.163.2 #和网关相同 

           测试 

            centos7 命令发生巨大变化 

            ip addr #查看IP地址 ip add 

            service network restart #重启网络 

            systemctl restart network.service #重启网络centos7 

            vi /etc/hosts #127.0.0.1 dredis 

            hostname dreids #注意必须修改机器名hostname 

            ping www.baidu.com #如果出现baiduip地址则表示网络连通 

        配置域名解析

          1、windows配置

            C:WindowsSystem32driversetchosts 

              192.168.163.129 hadoop01 

              192.168.163.130 hadoop02 

              192.168.163.131 hadoop03 

          2、linux虚拟机配置hosts

            vi /etc/hosts 

              192.168.163.129 hadoop01 

              192.168.163.130 hadoop02 

              192.168.163.131 hadoop03 

             hostname hadoop01 #修改每台服务器的机器名,必须 

          3、重启网络

            /etc/init.d/network restart 

            或者 

            service network restart 

          4、ssh免登陆

            在虚拟机中Terminal中执行下面语句 

              ssh-keygen #三次回车即可 

              ssh-copy-id -i .ssh/id_rsa.pub root@192.168.163.130 #复制密钥 

              ssh 192.168.163.130 

          5、安装jdk配置环境变量

    zk首先需要安装jdk环境。
    mkdir /usr/local/src/java        #按习惯用户自己安装的软件存放到/usr/local/src目录下
    上传jdk tar包                    #利用SSH工具软件上传文件
    tar -xvf jdk-7u51-linux-x64.tar.gz    #解压压缩包
    配置环境变量
    1)vi /etc/profile
    2)在尾行添加
    #set java environment
    JAVA_HOME=/usr/local/src/java/jdk1.7.0_51
    JAVA_BIN=/usr/local/src/java/jdk1.7.0_51/bin
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN PATH CLASSPATH
    保存退出
    3)source /etc/profile 使更改的配置立即生效
    4)java -version 查看JDK版本信息。如显示1.7.0证明成功。
    jdk及环境配置

          6、关闭防火墙

    systemctl stop firewalld.service            #关闭防火墙服务
    systemctl disable firewalld.service        #禁止防火墙开启启动
    或者
    systemctl restart iptables.service        #重启防火墙使配置生效
    systemctl enable iptables.service         #设置防火墙开机启动
    检查防火墙状态
    [root@hadoop01 ~]# firewall-cmd --state        #检查防火墙状态
    not running                                    #返回值,未运行

        Zookeeper安装配置 

            在Zookeeper集群环境下只要一半以上的机器正常启动了,那么Zookeeper服务将是可用的。因此,集群上部署Zookeeper最好使用奇数台机器,这样如果有5台机器,只要3台正常工作则服务将正常使用。 

          ZooKeeper介绍 

            ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是GoogleChubby一个开源的实现,是HadoopHbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

    官网:http://www.apache.org/dist/zookeeper/
    cd /usr/local/src                #安装文件根目录
    mkdir zk                        #安装路径
    tar -xvf zookeeper-3.4.8.tar.gz    #解压
    cd zookeeper-3.4.8                #进入目录
    mkdir log                        #创建日志文件路径
    mkdir data                        #创建数据文件路径,默认/tmp/zookeeper下
    cd data                            #进入数据目录
    vi myid                            #创建myid文件,内容1对应zoo.cfg中配置的server.1范围:1~255之间的整数,在集群中必须唯一
    cd ..                            #退到上级目录
    cd conf                            #进入配置目录
    cp zoo_sample.cfg zoo.cfg        #复制模板文件
    安装zookeeper
    tickTime=2000                            #tickTime心跳时间,
    clientPort=2181                        #访问端口
    dataDir=/usr/local/src/zk/zookeeper-3.4.8/data        #设置日志路径
    dataLogDir=/usr/local/src/zk/zookeeper-3.4.8/log    #增加设置日志路径
    server.1=hadoop01:2888:3888        #集群最少3个节点,可按机器名
    server.2=hadoop02:2888:3888        #2888指follower连leader端口 
    server.3=hadoop03:2888:3888        #3888指定选举的端口
    配置zoo.cfg
    Centos6.5
    /sbin/iptables -I INPUT -p tcp --dport 2181 -j ACCEPT     #打开端口
    /etc/rc.d/init.d/iptables save                            #修改生效
    /etc/init.d/iptables status                                #查看配置
    Centos7
    firewall-cmd --zone=public --add-port=2181/tcp --permanent #开端口
    firewall-cmd --zone=public --add-port=2888/tcp --permanent #开端口
    firewall-cmd --zone=public --add-port=3888/tcp --permanent #开端口
    firewall-cmd --reload                                        #执行
    firewall-cmd --zone=public --list-ports                    #查看打开端口
    注:关闭防火墙更彻底,要打开端口则所有的远程访问端口都类似上面必须打开
    打开2181、2888、3888端口
    sh bin/zkServer.sh start                #启动ZK服务
    sh bin/zkServer.sh stop                #停止ZK服务
    sh bin/zkServer.sh restart            #重启ZK服务
    启动、停止、重启服务
    [root@localhost conf]# jps
    5863 Jps
    2416 QuorumPeerMain        #QuorumPeerMain是zookeeper进程,启动正常
    检查服务
    sh bin/zkServer.sh status                #查看ZK状态
    查看结果:集群中只有一个leader,其他都是follower
    [root@localhost bin]# ./zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/src/zk/zookeeper-3.4.8/bin/../conf/zoo.cfg
    Mode: leader
    [root@localhost bin]# ./zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/src/zk/zookeeper-3.4.8/bin/../conf/zoo.cfg
    Mode: follower
    常见错误:
    Error contacting service. It is probably not running.
    如果出现上面提示,请检查配置文件或者防火墙是否放行2181/2888/3888端口
    [root@localhost bin]# ./zkServer.sh stop
    [root@localhost bin]# ./zkServer.sh start-foreground    日志启动方式
    注意,如果启动时拒绝访问,检查是否防火墙端口都打开,如果打开则都先启动,再看。某个节点没启动,当然访问是被拒绝。
    查看集群状态
    [root@localhost bin]# ./zkCli.sh -server hadoop01:2181
    客户端访问

    [zk: localhost:2181(CONNECTED) 1] ls /
    [dubbo, zookeeper]
    客户端查看服务

    安装HDFS

    cd /usr/local/src                                    #进入目录
    mkdir hadoop                                        #创建目录
    tar -xvf hadoop-2.7.1.tar.gz                         #上传文件
    上传文件及安装
    vi etc/hadoop/hadoop-env.sh
    #JDK安装目录,虽然系统配置了JAVA_HOME,但有时无法正确识别,最后进行配置
    export JAVA_HOME=/usr/local/src/java/jdk1.7.0_51/    
    #指定hadoop的配置文件目录,不运行hadoop可以不指定
    export HADOOP_CONF_DIR=/usr/local/src/hadoop/hadoop-2.7.1/etc/hadoop
    编辑hadoop-env.sh
    vi etc/hadoop/core-site.xml
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://192.168.163.129:9000</value>
        </property>
    
    <!--注意:用来指定临时存放目录,否则默认的系统的临时目录当重启hadoop时会被删除,影响HDFS下的文件 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/src/hadoop/hadoop-2.7.1/tmp</value>
        </property>
    
    <!--执行zookeeper地址-->
        <property>
            <name>ha.zookeeper.quorum</name>
            <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
        </property>
    </configuration>
    编辑core-site.xml
    vi etc/hadoop/hdfs-site.xml
    <configuration>
        <property>
          <name>dfs.namenode.rpc-address</name>
          <value>hadoop01:9000</value>
        </property>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
    编辑hdfs-site.xml
    vi etc/hadoop/hdfs-site.xml
    <configuration>
        <property>
          <name>dfs.namenode.rpc-address</name>
          <value>hadoop01:9000</value>
        </property>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
    编辑mapred-site.xml
    将mapred-site.xml.template复制一份并将名称修改为mapred-site.xml
    cp mapred-site.xml.template mapred-site.xml
    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
    </configuration>
    编辑mapred-site.xml
    <configuration>
      <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</value>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
      </property>
    </configuration>
    编辑yarn-site.xml
    vi slaves
    hadoop01        #将localhost改为hostname名
    编辑slaves文件
    配置hadoop的环境变量:
    #set hadoop env
    HADOOP_HOME=/usr/local/src/hadoop/hadoop-2.7.1/
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    source /etc/profile
    在/etc/profile中进行配置
    bin/hdfs namenode –format
    格式化文件系统

    看到上面的successfully格式化成功,文件在/tmp/hadoop-root/dfs/name下
    注意:可能失败,jps检查不到namenode,再次格式化,如果还不行检查配置文件。

    sbin/start-dfs.sh            
    #停止服务stop-dfs.sh
    启动HDFS服务

     

    也可以执行sbin/start-all.sh启动hadoop,其中就包括hdfs。它会多启动两个服务:nodeManagerResourceManager。执行jps就应该显示6个服务,就代表启动成功。

      检查服务是否正常:

          1、可以通过浏览器直接访问:http://192.168.163.129:50070/

          2、如下图

          

    1、可以用jps查看后台java进程,确保hdfs的进程都正常启动
    由于重新格式化系统可能出现某些进程不能启动,解决方法是先停止服务,删除rm -fr /tmp/hadoop-root 下name,data等节点数据,重新启动服务
    2、localhost: ssh: Could not resolve hostname localhost: Name or service not ……
    在/etc/profile中进行配置
     #set hadoop env
    HADOOP_HOME=/usr/local/src/hadoop/hadoop-2.7.1/
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    3、namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.
    [root@hadoop01 hadoop-2.7.1]# vim etc/hadoop/hdfs-site.xml
    <property>
      <name>dfs.namenode.rpc-address</name>
      <value>192.168.163.129:9000</value>
    </property>
    3、put: Cannot create file/test/letter.txt._COPYING_. Name node is in safe mode.
    执行下面的命令
    bin/hadoop dfsadmin -safemode leave
    常见问题
    http://192.168.163.129:50070/
    执行命令很慢,执行时稍等片刻
    bin/hdfs dfs -mkdir /user                        #创建user目录
    bin/hdfs dfs -put /root/install.log /use    r    #上传文件
    bin/hdfs dfs –ls /                                #查看根目录
    bin/hdfs dfs -ls /user                        #列目录
    创建新的文件夹,添加文件

          

    http://192.168.163.129:50070/
    注意:端口50070或者要关闭防火墙
    检查,可以直接通过浏览器浏览
  • 相关阅读:
    算法分析之最大子段求和(一)
    算法分析之动态规划
    算法分析之数字三角形逆推
    算法分析之递归与分治策略
    算法分析之汉诺塔问题
    算法分析之猴子吃桃
    基于python玩转人工智能最火框架之TensorFlow人工智能&深度学习介绍
    win10 64下anaconda4.2.0(python3.5)
    PYTHON 爬虫 baidu美女图片
    falkonry
  • 原文地址:https://www.cnblogs.com/xiangyuqi/p/8688202.html
Copyright © 2011-2022 走看看