一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)

1)集群规划:
主机名          IP      安装的软件                      运行的进程
master    192.168.199.130   jdk、hadoop                      NameNode、DFSZKFailoverController(zkfc)
slaver1    192.168.199.131    jdk、hadoop                       NameNode、DFSZKFailoverController(zkfc)
slaver2    192.168.199.132    jdk、hadoop                     ResourceManager
slaver3    192.168.199.133    jdk、hadoop                     ResourceManager
slaver4    192.168.199.134    jdk、hadoop、zookeeper       DataNode、NodeManager、JournalNode、QuorumPeerMain
slaver5    192.168.199.135    jdk、hadoop、zookeeper       DataNode、NodeManager、JournalNode、QuorumPeerMain
slaver6    192.168.199.136    jdk、hadoop、zookeeper       DataNode、NodeManager、JournalNode、QuorumPeerMain
2)注意:hadoop-2.6.4又增加了YARN HA:

  apache提供的hadoop-2.6.4的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装hadoop-2.6.4就需要重新在64操作系统上重新编译
(建议第一次安装用32位的系统,我将编译好的64位的也上传到群共享里了,如果有兴趣的可以自己编译一下)

3)说明:
    a:在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
      hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
      这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态
    b:hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.6.4解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调

1:hadoop分布式集群HA模式部署,七台机器跑集群:
  第一台机器:namenode zkfc
  第二台机器:namenode zkfc
  第三台机器:resourcemanager
  第四台机器:resourcemanager
  第五台机器:zookeeper journalnode dataNode nodemanager
  第六台机器:zookeeper journalnode dataNode nodemanager
  第七台机器:zookeeper journalnode dataNode nodemanager

2:之前的博客已经搭建过Zookeeper集群了,http://www.cnblogs.com/biehongli/p/7650570.html,然后我在原来的三个虚拟机的基础上面又加了四台虚拟机,这个时候同时跑七台虚拟机,电脑很吃力,所以自己的电脑尽可能配置要高些,这个电脑,8G内存,i5的处理器,虚拟机内存我每台虚拟机先设置512M,然后使用Xshell连接以后,将图形化界面关闭,ctrl+alt+f7,使用命令行模式;

3:Hadoop分布式集群HA模式部署开始准备:

  (1)首先,三台机器部署Zookeeper集群http://www.cnblogs.com/biehongli/p/7650570.html,之前已经部署过了,这里部署过程省略了;

  (2)我的分别是centos01(master节点),centos02(slaver1节点),centos03(slaver2节点)部署的是Zookeeper集群;

    centos04,centos05部署NameNode节点;

    centos06,centos07部署resourcemanager节点;

    然后centos01(master节点),centos02(slaver1节点),centos03(slaver2节点)增加DataNode节点;

4:首先将新加的四台虚拟机的主机名称修改和ip对应关系修改一下:

[root@localhost hadoop]# vim /etc/sysconfig/network

5:结合前期学习和现在的搭建Hadoop分布式集群HA模式部署的准备:

  (1)修改Linux主机名
  (2)修改IP
  (3)修改主机名和IP的映射关系(七台虚拟机都按照下面的对应关系写):
      ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等);
      /etc/hosts里面要配置的是内网IP地址和主机名的映射关系 ;


  (4)关闭防火墙(七台虚拟机全部关闭防火墙)
[root@localhost hadoop]# service iptables stop 关闭防火墙
[root@localhost hadoop]# service iptables status 查看防火墙是否关闭


  (5)ssh免登陆(免密登录只要理解其过程,这里不再贴图过程,过程很多,之前也贴过详细的,http://www.cnblogs.com/biehongli/p/7640469.html):

     七台虚拟机配置好了免秘钥登录之后,然后直接免秘钥登录第一次还要输入yes很心烦,然后百度一下,下面是输入yes的错误和解决办法:

The authenticity of host 'slaver6 (192.168.3.135)' can't be established.
RSA key fingerprint is cc:4e:23:01:ca:97:52:21:85:78:bc:29:ca:b3:12:52.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slaver6' (RSA) to the list of known hosts.
Last login: Thu Oct 12 22:34:41 2017 from master

       解决办法(挺好使的):

修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题

最后面添加:

StrictHostKeyChecking no

UserKnownHostsFile /dev/null

     验证一下,完成了免秘钥登录,(需要注意的是我一直用的root权限,所以免秘钥登录必须使用root权限才可以):

  (6)安装JDK,配置环境变量等(由于我的机器都改成了命令行模式,所以使用命令将jdk传到新装的四台虚拟机上面),记得上传之后解压缩操作哈,我都忘记了,然后直接验证,郁闷咋不正确呢,闹笑话了吧:

 

    然后配置一下jdk环境,由于我的jdk存放路径都一样,所以直接复制之前的文件即可(vim /etc/profile):

    修改的如下所示([root@slaver3 hadoop]#  source /etc/profile),修改/etc/profile文件,让它即时生效 source /etc/profile:

     修改好之后验证一下(七台虚拟机全部验证jdk是否安装配置成功):

6:学习Hadoop分布式集群HA模式部署:

集群规划:
    主机名          IP                  安装的软件                        运行的进程
   master     192.168.3.129      jdk、hadoop                        NameNode、DFSZKFailoverController(zkfc)
   slaver1    192.168.3.130      jdk、hadoop                        NameNode、DFSZKFailoverController(zkfc)
   slaver2    192.168.3.131      jdk、hadoop                        ResourceManager
   slaver3    192.168.3.132      jdk、hadoop                        ResourceManager
   slaver4    192.168.3.133      jdk、hadoop、zookeeper         DataNode、NodeManager、JournalNode、QuorumPeerMain
   slaver5    192.168.3.134      jdk、hadoop、zookeeper         DataNode、NodeManager、JournalNode、QuorumPeerMain
   slaver6    192.168.3.135      jdk、hadoop、zookeeper         DataNode、NodeManager、JournalNode、QuorumPeerMain

说明:
    (1)在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
    (2)hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode,这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态
    (3)hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调

 7:安装配置zooekeeper集群(在master,slaver1,slaver2上),之前写过,这里写下过程,具体操作不再贴:

(1)解压
            tar -zxvf zookeeper-3.4.5.tar.gz
(2)修改配置
            cd /home/hadoop/zookeeper-3.4.5/conf/
            cp  zoo_sample.cfg  zoo.cfg
            vim zoo.cfg
            修改:dataDir=/home/hadoop/zookeeper-3.4.5/tmp
            在最后添加:
            server.1=master:2888:3888
            server.2=slaver1:2888:3888
            server.3=slaver2:2888:3888
            保存退出
            然后创建一个tmp文件夹
            mkdir /home/hadoop/zookeeper-3.4.5/tmp
            再创建一个空文件
            touch /home/hadoop/zookeeper-3.4.5/tmp/myid
            最后向该文件写入ID
            echo 1 > /home/hadoop/zookeeper-3.4.5/tmp/myid
(3)将配置好的zookeeper拷贝到其他节点(首先分别在slaver1、slaver2根目录下的/home/hadoop)
            scp -r /home/hadoop/zookeeper-3.4.5/ slaver1:/home/hadoop/
            scp -r /home/hadoop/zookeeper-3.4.5/ slaver2:/home/hadoop/
            
            注意:修改slaver1、slaver2对应/home/hadoop/zookeeper-3.4.5/tmp/myid内容
            weekend06:
                echo 2 >/home/hadoop/zookeeper-3.4.5/tmp/myid
            weekend07:
                echo 3 >/home/hadoop/zookeeper-3.4.5/tmp/myid

8:安装配置hadoop集群(在slaver4上操作),首先将Hadoop的安装包hadoop-2.4.1.tar.gz上传到centos04上面,并且解压缩:

[root@localhost hadoop]# tar -zxvf hadoop-2.4.1.tar.gz

配置HDFS(hadoop2.0所有的配置文件都在hadoop-2.4.1/etc/hadoop目录下),#将hadoop添加到环境变量中,七台虚拟机都配置都配置一下hadoop的环境变量,这里在后加的四台虚拟机配置一下hadoop的环境变量,不过可以现在slaver3(centos04将hadoop配置好,直接复制到剩下的三台虚拟机上面,这样效率最高):

修改的如下所示(贴下代码,好复制粘贴):

export JAVA_HOME=/home/hadoop/jdk1.7.0_65

export HADOOP_HOME=/home/hadoop/hadoop-2.4.1

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

第一个配置文件:修改hadoo-env.sh(首先切换到cd /home/hadoop/hadoop-2.4.1/etc/hadoop/):

修改内容如下所示(即配置jdk的路径):

 

第二个配置文件:修改core-site.xml(修改的内容如下,方便复制)

<configuration>
    <!-- 指定hdfs的nameservice为nameService1 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns1/</value>
    </property>
    <!-- 指定hadoop临时目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hadoop-2.4.1/tmp</value>
    </property>

    <!-- 指定zookeeper地址 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>master:2181,slaver1:2181,slaver2:2181</value>
    </property>
</configuration>

修改的内容如下,方便复制:

第三个配置文件:修改hdfs-site.xml(修改的内容如下,方便复制)

<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>slaver3:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>slaver3:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>slaver4:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>slaver4:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slaver1:8485;slaver2:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

操作内容如(内容太多,分开截屏了)vim hdfs-site.xml:

第四个配置文件:修改mapred-site.xml(修改的内容如下,方便复制)

<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
</configuration>

 操作内容如下所示:

[root@slaver3 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@slaver3 hadoop]# vim mapred-site.xml

第五个配置文件:修改yarn-site.xml(修改的内容如下,方便复制)

<configuration>
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>slaver5</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slaver6</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slaver1:2181,slaver2:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

 操作如下所示:

 配置无密登录ssh-keygen -t rsa,ssh-copy-id快速配置无密登录,centos04虚拟机(即slaver3节点配置无密登录,登录自己,登录master,登录slaver1,登录slaver2,登录slaver4,我配置的无密登录七台虚拟机,这点看你自己吧。);centos06虚拟机(即slaver5节点配置无密登录,登录自己,登录master,登录slaver1,登录slaver2);

#注意:两个namenode之间要配置ssh免密码登陆,

第六个配置文件:修改slaves(修改的内容如下,方便复制)

注意:slaves文件就是启动DataNode、NodeManager、一定要理解概念和含义。

修改slaves(slaves是指定子节点的位置,因为要在slaver3上启动HDFS、在slaver5启动yarn,所以slaver3上的slaves文件指定的是datanode的位置,slaver5上的slaves文件指定的是nodemanager的位置):

master
slaver1
slaver2

操作如下所示vim slaves:

之前,master,slaver1,slaver2配置过三台机器的集群,这里因为需要,由slaver3配置好的hadoop复制到剩余的六台机器,这里要删除之前的集群,这里先不删除home/hadoop/hadoop-2.4.1,先将这个名称改了,万一七台机器的集群搭建失败,还可以使用三台机器的集群;

如: [root@slaver1 hadoop]# mv hadoop-2.4.1 hadoop-2.4.1-copy

 将配置好的hadoop拷贝到其他节点(有虚拟机04,slaver3节点):

[root@slaver3 hadoop]# scp -r hadoop-2.4.1/ master:/home/hadoop/
[root@slaver3 hadoop]# scp -r hadoop-2.4.1/ slaver1:/home/hadoop/
[root@slaver3 hadoop]# scp -r hadoop-2.4.1/ slaver2:/home/hadoop/
[root@slaver3 hadoop]# scp -r hadoop-2.4.1/ slaver4:/home/hadoop/
[root@slaver3 hadoop]# scp -r hadoop-2.4.1/ slaver5:/home/hadoop/
[root@slaver3 hadoop]# scp -r hadoop-2.4.1/ slaver6:/home/hadoop/

9:配置至此已经全部结束,如果启动出错再回头看,现在开始启动:

 ###注意:严格按照下面的步骤:

  9.1:启动zookeeper集群(分别在master、slaver1、slaver2上启动zookeeper,#查看状态:一个leader,两个follower):

 [root@master hadoop]# cd /home/hadoop/zookeeper-3.4.5

然后启动剩下的两个Zookeeper节点:

 

然后查看一下第一个启动的Zookeeper节点的状态,如下所示:

 

  9.2:启动journalnode,为hadoop提供元数据管理(edits),第一次需要手动起,以后就不需要手动启动了,就包含在了start-dfs.sh脚本里面了;(分别在在master、slaver1、slaver2上执行),#运行jps命令检验,master、slaver1、slaver2上多了JournalNode进程:

 

其实启动master节点以后,slaver1节点,和slaver2节点的journalnode已经启动起来了,可以查看一下:

 

 如果启动过程中有的节点没有启动起来,下面介绍一下如何查看日志,这点自己应该必须会吧,如hadoop没启动起来,就查看hadoop的日志(进入日志以后使用大G可以直接到达尾行,这样可以直接看报啥错误。):

[root@master logs]# less hadoop-root-journalnode-master.log

   9.3:格式化HDFS,在slaver3上执行命令:hdfs namenode -format或者./hadoop namenode -format;

    #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/home/hadoop/hadoop-2.4.1/tmp,然后将/home/hadoop/hadoop-2.4.1/tmp拷贝到slaver4的/home/hadoop/hadoop-2.4.1/下。

可以查看一下,创建了tmp目录,里面的初始fsimage:

现在要保持slaver3和slaver4的fsimage初始值保持一致,即复制slaver3到slaver4:

scp -r tmp/ slaver4:/home/hadoop/app/hadoop-2.4.1/

  9.4:格式化ZKFC,zkfc用来做两个namenode的状态切换管理或者失败切换管理,(在slaver3上执行即可):hdfs zkfc -formatZK

 

格式化以后会在Zookeeper写一些东西,现在可以看一下去(master节点):

 

启动[root@master bin]# ./zkCli.sh

可以看到建立一个数据节点,叫做hadoop-ha

   9.5:启动HDFS(在slaver3上执行):sbin/start-dfs.sh或者start-dfs.sh(如果配置了hadoop的环境变量),如下图可以很清楚的看到那个节点启动那些进程,自己仔细分析一下,做到心中有数:

 

最好去看看其他节点的进程是否启动起来,分别贴一下其他节点的进程启动情况:

 

  9.6:启动YARN(#####注意#####:是在slaver5上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动):   sbin/start-yarn.sh或者 start-yarn.sh(如果配置了hadoop的环境变量,source /etc/profile修改的配置文件即时生效):

 接着启动一下slaver6节点的yarn:

如下所示:start-yarn-.sh或者yarn-daemon.sh start resourcemanager

到此,hadoop-2.4.1配置完毕,可以使用浏览器访问:

 http://192.168.3.132:50070
 NameNode 'slaver3:9000' (active)
 http://192.168.3.133:50070
 NameNode 'slaver4:9000' (standby)

 现在可以再看一下各个节点的启动情况:

 

 我准备用浏览器访问一下的时候,浏览器不能访问,我可以ping通我的192.168.3.132,郁闷了,节点都起来了,突然一想,可能是防火墙没关,然后关了防火墙试一下,如下所示:

 

 浏览器访问如下所示(slaver3/192.168.3.132是active的;slaver4/192.168.3.133是standby的):

 查看一下yarn集群管理的界面(slaver5/192.168.3.134):

当我启动其中一个yarn的时候出现如:This is standby RM. Redirecting to the current active RM(这是备用RM。重定向到当前活动RM),

而另一个yarn就可以正常启动:

10:验证HDFS HA:

  首先向hdfs上传一个文件(首先查看此目录下面是否存在数据:

    cd /home/hadoop/hadoop-2.4.1/tmp/dfs/data/current/BP-1794153128-192.168.3.132-1508123872265/current/finalized):

 

开始上传文件:

然后在master,slaver1,slaver2节点都可以看到block块:

 

现在文件已经上传了,可以看到集群是正常工作的,然后看看'slaver3:9000' (active)是active的,'slaver4:9000' (standby)是standby的,把slaver3干掉,看看是否正常切换:

(然后再kill掉active的NameNode):

然后看看另一个,正常的话肯定由standby变成了active:(这个时候slaver4上的NameNode变成了active)

从hdfs上面下载上传的文件,看看能否下载,看看集群是否正常工作:

 

现在将那个kill挂掉的nameNode启动起来:

通过浏览器访问:http://192.168.3.132:50070,如下所示:

 如果http://192.168.3.133:50070/即slaver4突然断电,那么切换到slaver3需要等待自己配置的30s,然后自己由standby切换为active;

 如果slaver3为active了,然后上传文件的过程中,将slaver3的namenode杀掉,然后可以发现文件可以正常上传,slaver4由standby切换为active了;

 11:验证YARN(查看yarn的状态也不好查看,yarn的ha机制不是很好,这里测试的结果就是如果两个resourcemanager都正常,肯定可以完成任务,如果一个死了,另一个也可以完成任务,如果把active的杀死了,任务就失败了):

   运行一下hadoop提供的demo中的WordCount程序:

 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out

然后发现一直卡住不动了,可能是内存不够了,master节点,slaver1节点,slaver2节点的nodemanager进程都没了:

好吧,先不测试了:

12:测试集群工作状态的一些指令:

bin/hdfs dfsadmin -report    查看hdfs的各节点状态信息

bin/hdfs haadmin -getServiceState nn1  获取一个namenode节点的HA状态

sbin/hadoop-daemon.sh start namenode  单独启动一个namenode进程

./hadoop-daemon.sh start zkfc   单独启动一个zkfc进程

 

可以hdfs的参数:

 如haadmin用来管理ha的:

 

手动将standby切换为active:

 

手动将active切换为standby:

 

可以去浏览器看看slaver4的状态,如下所示:

或者通过命令查看namenode的状态:

 学习新知识自己就像白痴一样,学完以后发现,哦,原来又学到新知识了,是对知识的饥渴,哦,是渴望。思考可以帮助你理解。

时间: 2024-08-31 15:42:25

一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)的相关文章

一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)

1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构.  注意:HADOOP的核心组件有: 1)HDFS(分布式文件系统) 2)YARN(运算资源调度系统) 3)MAPREDUCE(分布式运算编程框架)       Hadoop 中的分布式文件系统 HDFS 由一个管理结点 ( NameNode

一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序

一:序列化概念 序列化(Serialization)是指把结构化对象转化为字节流.反序列化(Deserialization)是序列化的逆过程.即把字节流转回结构化对象.Java序列化(java.io.Serializable) 二:Hadoop序列化的特点 (1):序列化格式特点: 紧凑:高效使用存储空间. 快速:读写数据的额外开销小. 可扩展:可透明地读取老格式的数据. 互操作:支持多语言的交互. (2):Hadoop的序列化格式:Writable接口 三:Hadoop序列化的作用: (1):

一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现

1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toString(),hashCode(),equals()方法 1 package com.areapartition; 2 3 import java.io.DataInput; 4 import java.io.DataOutput; 5 import java.io.IOException; 6 7 im

一脸懵逼学习Hive的安装(将sql语句翻译成MapReduce程序的一个工具)

Hive只在一个节点上安装即可: 1.上传tar包:这个上传就不贴图了,贴一下上传后的,看一下虚拟机吧: 2.解压操作: [root@slaver3 hadoop]# tar -zxvf hive-0.12.0.tar.gz 解压后贴一下图:  3:解压缩以后启动一下hive:  4:开始操作sql: 好吧,开始没有启动集群,输入mysql创建数据库命令,直接不屌我,我也是苦苦等待啊: 5:启动我的集群,如下所示,这里最后帖一遍部署以后集群关了,重新开启集群的步骤,不能按照部署集群的时候进行格式

一脸懵逼学习Hive的元数据库Mysql方式安装配置

1:要想学习Hive必须将Hadoop启动起来,因为Hive本身没有自己的数据管理功能,全是依赖外部系统,包括分析也是依赖MapReduce: 2:七个节点跑HA集群模式的: 第一步:必须先将Zookeeper启动起来(HA里面好多组件都依赖Zookeeper): 切换目录,启动Zookeeper(master节点,slaver1节点,slaver2节点):./zkServer.sh start 第二步:启动HDFS(千万不要格式化了,不然肯定报错给你): 直接在slaver3节点启动:star

一脸懵逼学习Storm---(一个开源的分布式实时计算系统)

Storm的官方网址:http://storm.apache.org/index.html 1:什么是Storm? Storm是一个开源的分布式实时计算系统,可以简单.可靠的处理大量的数据流.被称作"实时的hadoop".Storm有很多使用场景:如实时分析,在线机器学习,持续计算, 分布式RPC,ETL等等.Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个结点每秒可以处理 数以百万计的消息).Storm的部署和运维都很便捷,而且更

一脸懵逼学习Zookeeper(动物园管理员)---》高度可靠的分布式协调服务

 1:Zookeeper是一个分布式协调服务:就是为用户的分布式应用程序提供协调服务 A.zookeeper是为别的分布式程序服务的 B.Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,Zookeeper就能正常服务) C.Zookeeper所提供的服务涵盖:主从协调.服务器节点动态上下线.统一配置管理.分布式共享锁.统一名称服务-- D.虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能: 管理(存储,读取)用户程序提交的数据: 并为用户程序提供数据节点

一脸懵逼学习HBase的搭建(注意HBase的版本)

1:Hdfs分布式文件系统存的文件,文件存储. 2:Hbase是存储的数据,海量数据存储,作用是缓存的数据,将缓存的数据满后写入到Hdfs中. 3:hbase集群中的角色: (1).一个或者多个主节点,Hmaster: (2).多个从节点,HregionServer:  1:由于HBase依赖hdfs,所以下载的时候注意HBase的版本: 注:我使用的是hadoop2.4版本的,所以HBase选择支持2版本的:hbase-0.96.2-hadoop2-bin.tar.gz 2:上传hbase安装

一脸懵逼学习MapReduce的原理和编程(Map局部处理,Reduce汇总)和MapReduce几种运行方式

1:MapReduce的概述: (1):MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. (2):MapReduce由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单. (3):这两个函数的形参是key.value对,表示函数的输入信息. 2:MapReduce执行步骤: (1): map任务处理 (a):读取输入文件内容,解析成key.value对.对输入文件的每一行,解析