Hadoop家族以及环境搭建(附图解)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hadoop家族以及环境搭建(附图解)
来源:ITSTAR
回顾上次课内容,上一次课首先我们就给大家介绍了项目如何去安装Linuxp环境,这个步骤我们写得非常的清楚和详细,建议大家下来以后一定要按照我们的文档一步一步的进行操作,所以我们提供了一个word的文档,这个文档大家可以从我们这个实验介质当中可以找到这个文档,那这里实际上就列出来了你在安装这个Linux的时候需要注意哪些具体的问题。

前面的这些步骤都比较简单,咱们就看一看就可以了。

前面的这些都是比较简单,我们把重点的几个步骤给大家再说一下,我们往下看其中一个非常重要的步骤就是,你要选择你的网卡类型,我们在这里推荐大家去选择这个仅主机模式的这X网卡,它就能够保证我们的本机和虚拟机能够进行通信,这样我们在本机上通过Putty就能连接到虚拟机Linux上,但是你选择仅主机模式的时候,在安装Linux的时候就需要设置它的ip地址,而这个ip地址咱们的笔记上面是写得很清楚的,那么我们可以看到当你设置ip地址的时候,你需要跟你本机上VMware net1的这个网卡在同一个网段上,这个咱们可以来确定下,因为我们抓好了这个VMware以后我们可以打开我们的这个命令行的窗口,我们可以执行ip这个config -all列出来所有的ip的地址,我们应该看这个就是VMware net1的这个网卡,他锁定的ip地址是192.168.157注意,这个地址是网关地址,网关就是windows,然后在安Linux的时候,你指的ip地址需要跟这个ip地址在一个网段也就是说在这个157的这个上所以呢我们一共会安装5台的Linux,那么ip地址大家设置的时候要设是192.168.157.111,192.168.157.112,192.168.157.113和192.168.157.114和192.168.157.115这样,通过这些ip地址就可以从windows 上连接到Linux上,这个问题大家一定不要设置错了。

所以这样我们就看一下文档,我们把非常重要的地方给大家说明一下,就是设置你的主机名和网络ip地址。

我们选择network 和hostname。

那首先你需要用你的虚拟机的网卡就是要打开网卡,然后你还需要去设置一下你的主机的名字,就是比如说我们这里设置成bigdata111,那么IP地址192.168.157.111。

然后选择configure按钮去设置它对应的ip地址。

然后你来设置ip地址得首先需要把勾给勾选上,这样你再启动你的虚拟机的时候它就会自动的去连接这X网卡,那么接下来怎么去设置ip地址?必须要选择IPV4的这个Settings,然后我们看一下在这里需要分配一个ip地址,注意这个是192.168.157.111,掩码是三个255,把这些东西都设置好了以后就开始进行安装了,这个步骤非常的重要,设置好了以后现在我们可以看一下,现在就可以通过本机的putty连接到password,用户名是root密码是password,现在我们确定下虚拟机的ip地址,ifconfig那这个时候你可以看到,
我现在的ip地址是192.168.157.111,后面的这几台虚拟机就是112,113,114和115,你通过这种方式设置好了以后就可以在windows上进行远程的操作,所以关于这个问题这大家在安装配置的时候要一定要这个注意。

讲到这个时候实际上我们就可以按照我们的讲义上列出来的这些内容一步一步的给大家回顾一下。

把这个环境安装好了以后的后面的这些命令,比如说VI编辑器,实际上就是Linux的一个记事本,它几种模式大家需要去熟悉,尽量的去使用。

使用命令行的方式来进行编辑和配置,因为我们在安装hadoop时候很多的配置文件都是通过VI编辑器来进行编辑的,这个大家需要去练习一下。

我相信通过我们这段时间的学习,那对于VI编辑器大家都能够去掌握。

接下来我们可以看一下就是这些文件目录操作命令,讲这个内容就是为了我们后面学习HDFS,那么HDFS 是一个文件操作系统,它里面的操作命令跟我们的Linux操作命令非常像,所以比如ls命令,mkdir的命令,这些命令在Linux当中有同样的道理,在我们HDFS当中也有。

大家下来以后,按照我们课堂的笔记来进行练习就可以了。

好那么接着往下面看就是关于权限的问题,那么权限的问题跟HDFS也是一样的,它也有个权限的一个问题,那么现在我们可以看一下,实际上我上堂课举的是两个例子,那刚才同学可能有些疑惑,我们可以看一下,如果这一位有权限,我们就把这一位的标示成1,否则就标示成0,所以我们可以看一下,当我们去查看一个文件的时候,它前面一共有十位,第一位是表示文件还是目录,第一个三位在他表示当前用户的权限;那第二个三位表示同组的权限,而最后的一个三位表示其他人的权限。

我们下面这是两个什么,两个例子,第一个例子是我要对所有的人针对这个文件可读可写,可执行。

我们可以看一下,这个文件可读可写可执行,那么首先当前用户可读可写可执行,三位上都是一,同组用户可读可写可执行,因为是所有人,那么每一位上也是一,那其他的人也是这样的权限,每一位上也是这个1,所以我们就得到了三个二进制的数字,分别是7 7 7。

通过chmod这个命令7 7 7就可以改变这个文件的权限,这是我们的第一个例子。

第二个例子,我要对这个文件它的权限做一个修改,对于当前的用户可读可写可执行,对同组用户可读可写,不可以执行,那其他人可读,没有别的权限。

首先我们看第一个三位在当前用户三个权限都有,所以说每一位上的值都是1,就得到了7;对于同组用户只有读权限和写权限,没有执行权限,所以它就是0,那么这样就得到了6这个数字;对其他人可读不可写不可执行,这个数字是1 0 0得到的数字就是4,就可以得到7 6 4。

所以我们要达到这样的效果就通过chmod这个命令,所以大家现在可以看看咱们的两个例子。

那么了解了这些内容以后,咱们就在Linux环境上安装好了jdk和Tomcat,你可以把应用程序部署在上面去就可以了。

那么我们上堂课留了一个问题,咱们来给大家介绍就是Java的死锁,现在就来看一下。

我们给大家列了一下。

现在我们就进入今天课程的学习,首先我们可以看一下案例就是Java的这个死锁,因为我们的hadoop 也是Java语言开发的一个框架,所以如果我们在hadoop里面产生了这种死锁或者产生了性能的瓶颈,应该怎么去找到这个问题并且解决这个问题?我们来看一下上次课留的源码程序,我提供了一个DeadLock.Java的这么一个文件,我把它放到今天的课堂笔记当中,如果我执行这个Java程序,它就会产生一个死锁?这个Java程序先简单的来看一下为什么会产生死锁,那我首先问大家一个问题,什么是死锁?死锁是线程死了吗?有同学说到,线程互相等待:A等B,B等A,就产生了死锁。

了解了这个基本的内容以后,现在我们来看一下这个程序是怎么写的,为什么一旦执行了这个程序,就会产生一个死锁。

首先,我定义了两把锁:叫做lockA和lockB,
那这就是两个object的对象,然后我在我的主程序当中启动了两个线程分别是ThreadA和ThreadB并且把这两把锁给传递进去,那既然是线程,我们就应该看到它的run方法,所以我们首先可以看一下线程A 的run方法。

首先我在run方法中执行了一个synchronized,我给lockA的这把锁同步一下,相当于你就给它加了一把锁,如果锁成功了,那我们就会看到有句话打印了出来,
我在线程A当中把A这把锁给锁住了,然后
我让A这个线程睡三秒钟,为什么要睡三秒钟?因为我还有一个线程B,哪个线程先执行是不一定的,所以我在睡三秒钟的过程当中,线程B就可能启动了,然后我睡醒了,接着在这synchronized下我想锁一下B,注意锁B的时候,这个线程A,它是把A这把锁给它锁了,如果锁成功了,它就会打出来一句话就叫做在线程A当中我们把B给锁住了,那这是线程A的执行过程。

我们接着看一下线程B的执行过程,那看它的run方法,它执行的程序跟A是一样的,只不过顺序倒过来了,首先我们看一下它把B给锁住,也睡三秒钟,睡醒了以后我说在锁住一个A,现在我就问大家一个问题,我们看了这个程序以后的,那这个程序会不会产生时,你运行这个程序会产生死锁吗?那当然会产生死锁,我们看一下,通过分析一下,线程A里面,我首先把这个什么把这个A这把锁给锁住了,睡三秒钟,我睡三秒钟的时候,线程B他这把锁也给锁住了。

然后这两个线程都睡醒了以后,那么线程A想要来锁B,能锁住吗?锁不住了,它已经被线程B给锁住了,那它就会在这里发生等待,那么同样的道理线程B睡醒了以后,要锁A,能锁住吗?它被线程A锁住了,这里也发生了等待,并且是A等B,B等A从而产生了死锁。

现在执行一下这个程序,大家需要在命令行上执行,如果我们有一天没有eclipse怎么办呢?现在我们首先需要对Java程序进行编译一下,Javac一下,编译完了以后,我们就得到了class文件,现在我来执行一下DeadLock.java,我们看一下,
既然打印出来一个信息,在线程A当中锁住了A,在线程B当中锁住了B那程序就停掉了,为什么停呢?因为我的线程A想要去锁线程B这把锁,县城B想去锁A,这里就发生了死锁,死锁产生了以后肯定会影响性能的瓶颈,那怎么办呢?这个时候就问大家:如果我的Java程序产生了死锁,或者没有死锁但是有性能问题,就特别慢,那么怎么办?你有什么办法去解决这个问题?所以咱们学大数据必须要懂Java,你有什么办法去解决这个问题呢?说这个时候我们就需要给它介绍一下,那么你不能去care这个线程,你需要找到问题的存在的原因。

现在我们就来给大家说一下,那我们对于jdk来说,装好了jdk以后,它提供了一个非常强大的性能诊断工具,可对那通过性能诊断的工具我们就能够找到死锁的位置或者有性能的问题,我们都可以通过这个工具分析出来,那么这个工具叫Thread Dump,它就相当于是一X照片,就我在某一个时刻对我Java 虚拟机中的所有线程照一X照片,那么照出来的这X照片就叫私人账户,他是一个文本信息,通过分析文本通过分析线程的状态信息,我们就能找到死锁或者找到性能的瓶颈,那么现在我们怎么得到这个Thread Dump的信息?那对于Linux来说,或者对于windows来说,得到的方式不一样。

首先我们介绍一下这个windows,因为我们刚才的这个程序是在Windows上执行的,一会再给大家介绍下Linux上怎么执行,你怎么去得到你当前这个Java虚拟机,Thread Dump信息?在Windows上按一个组合键:Ctrl + break键同时按,那有些同学包括我的这个机器上都没有这个break键,我们可以使用FN键加上B键,来取代这break键。

在哪个地方按这个键?在Java程序执行的命令行窗口上来按这个键,现在我们在windows上就来按下这个键,但是我现在的这个机器上没有这个break键,所以说我按FN 键+B键,对同时按Ctrl + FN + B,你会发现打印出了很多信息,那么信息就是当前Java虚拟机当中所有Java线程的一个状态信息,那我们可以看一下前面的这个标题,指的是我们在这个时间给Java虚拟机照了一个照片,那照出来的照片叫Thread Dump,那通过分析这个信息我们就能得到死锁的信息,
前面的这些大家不用去看。

看这个这个地方,那你有没有发现这里有句话,这找到了一个死锁,所以我们把这个信息拷贝下来放到我们的课堂笔记上,大家可以看一下,为什么他这个是产生一个死锁?死锁产生在什么位置上呢?产生在我们这个Java程序的第68行和这个Java程序第41号,那下面就是这两个线程信息。

首先我们可以看一下,在线程一当中waiting to lock去等待锁一把锁,那么这是锁的ID号,但是我能锁住吗?锁不住,因为这把锁被下面的线程0给锁住了,你看这两个ID号是不是一样的ID号?那反过来说我
在线程一当中我是不是把这把锁给锁住了?那谁又在等这把锁呢?下面这把锁,而下面的这个线程是不是等着上边这把锁,这个时候就会发生线程的互相等待,产生死锁。

这在windows上就找到了,你的程序是有问题,到第68行去看一下,第41行,看一下为什么在这个地方产生死锁。

现在我们只能在这个命令行上按下Ctrl + C强制退出,这是在windows上。

如果是在Linux上,我们现在把我们的这个程序上传到Linux上去,我们随便建一个tmp目录,把刚才的Java程序放上去。

现在到Linux上来做同样的一个实验,首先javac 编译一下,这时候就产生了class文
件,同样我们来执行DeadLock,你看现象跟刚才在windows上看到的现象是一样的。

OK我在线程A当中把A给锁了,而线程B当中把B给锁了,它就停在这了,它会产生一个死锁。

那同样的道理我们有没有办法,在Linux上把Thread Dump信息给打印出来?可以的,这怎么办呢?我执行一个kill -3 pid,我问一下大家用的最多的kill命令对是什么?是kill 减几?Kill -9,就是说我把这个进程强制的给它杀死。

对这里不用Kill -9,kill -3的意思就是说产生Thread Dump信息,那么这pid是什么?pid就是对应的Java程序的进程号,那我怎么知道我当前这个Java程序的进程号是多少呢?你装好了jdk 以后,那么jdk作为我们提供了一个工具,叫什么叫jps那这个jps就可以列出你这台机器上它的所有的Java进程以及它对应的什么进程号,现在我们看一下,我现在这个DeadLock Java程序,他对应的是3428,现在我们执行kill -323428,大家一定要注意一下我在执行这个命令的时候,后面的那个窗口会不会发生什么变化?
这个执行之后,你看后面所打印出很多的信息,这个信息跟刚才看到的是一样的,我在这个地方也会产生一个死锁,
所以这就是Thread Dump信息,那么了解了以后,大家下来以后都可以来试一下。

所以总结一点,你使用Thread Dump可以干嘛呢?它可以分析死锁,在那没有死锁问题分析性能的问题。

那比如说我在做一个什么操作的时候特别慢,那么他也不出错,没有exception没有错误,但是就是慢,那么我怎么去找到慢的原因?通过这个都能够分析得出来,所以讲到这里我们就把上堂课遗留的这个问题给大家解释完成。

现在我们进入今天课程的学习,那么从今天开始我们就进入到大数据的学习当中,那对于Linux的部分来讲,我们只需要掌握我们之前提到过的Linux的这些基本操作就可以了,我们用不到很深的内容。

我们首先看第一个问题,我们学习大数据在学什么,我们怎么学?首先第一个学什么,我们要学大数据的原理、运行机制,还有体系结构。

简单来说就是学它的理论基础,为什么可以实现大数据的这些处理,原理是什么。

运行机制,它的架构是什么样子的。

在讲这部分内容的时候,我们会通过画图的方式来给大家详细的去讲解。

包括我们大家拿到的课程的讲义,那么这个讲义上面我们可以看到有很多图像,肯定不是官方提供的这些图,这些图是我在上课的过程当中我带着同学一起把它给画出来的现场画的,我们通过边画的过程,让大家去了解它里面的这些机制和原理,这样可以加深大家的印象。

这部分的内容大家注意下是最重要的内容,因为你只有把这些原理和运行机制掌握了以后才能够继续后面的学习。

第二部分要学习的内容是安装和配置,那么我们在学习大数据的时候,我们可以去看一下我们提供给大家的这些课程的介质,有这么多的介质,我们需要一个一个地去把它给装上,对那安装hadoop也并不是那么简单的,比较麻烦,所以我们会给大家一步一步的去演示怎么去安装和配置,这个时候要求我们动手一步一步的来进行安装,一定要动手。

第三个就是说你学习会原理运行机制,有了环境,安装配置好了,你是不是就可以来进行这个操作?你操作你大数据的这些东西,操作的方式总的来说有几种?第一种就是命令行,类似于Linux Dos的命令行一样;第二种提供Java的apI,我们可以通过编写Java程序来操作我们的大数据;第三种方式叫Web Console,
它提供一个网页图形工具,那么你通过这个图形工具,你也能够来操作去访问我们的这些信。

所以在学习这部分内容之前,我们就需要知道我们学习大数据必须要具备什么样的基础,一个是java的基础,这个必须要掌握,另一个就是Linux基础,那你把这些内容都掌握了以后,实际上就可以来学习大数据了。

这是咱们来学习这部分内容之前首先要大家必须要掌握的知识。

那么现在我们看一下下面的这方面,这实际上是列出了hadoop这一部分,我们需要给大家介绍的这些章节,我们会带着大家一起来列出一个详细的一个大纲,就是要我们达到这些目的:第一个目的就是让大家掌握去详细的知道我们学习的内容,要学习哪些内容,让大家有一个整体的概念,要学习哪些知识点;达到第二个目的,就是咱们讲在大数据的领域中,概念非常多,名词非常多,如果大家之前没有一定的了解对那你第一次接触到这些概念你第一次接触到这些名词接收起来就会有一定的困难,那这个时候就需要一个过程,所以我们现在带着大家一起把下面这17章在里面每一X详细的内容给大家列一个大纲把里面涉及到的这些概念和一些基本的一些名词第一次给大家提出来,让大家在学习它之前就对这些名词有一定了解,至少说我们后面再讲到它的时候。

那么我提到这个名词我提到这个概念,你能想起来我在前面上课的时候老师提到过这个名词,我达到这个目的就OK了。

现在我们就带着大家一起列出一个详细的大纲。

第一章,hadoop的背景知识和起源,那么在这一部分第一个问题就是你要学习大数据,那第一个问题就是什么是大数据,大数据基本概念是什么?第二个问题,什么是数据仓库?这名词大家可能之前听过,如果你把它翻成英文叫Data Wraehouse,就是数据仓库。

hadoop可以看成是数据仓库的一种实现方式,我这里的用词是一种实现方式,那可不可以有别的方式呢?当然可以,那到底什么叫数据仓库呢?我会通过画图的方式来给大家详细的解释,我说最重要的是什么?讲的是原理,怎么讲原理?画图,画图比较的这个直观。

接下来需要了解两个基本的概念,OLTP和OLAP。

那么在第一章我们最重要的内容就是第四部分谷歌的基本思想,那么我们这里会重点给大家介绍三篇论文。

因为hadoop框架就是根据谷歌的这三篇论文提出来的,我们会花很多的时间详细的去介绍这部分的知识,介绍这部分的知识原因就是让大家掌握它的原理,原理非常的重要,我先把这三篇论文的名字写在这里:
第一篇论文GFS,是谷歌的文件系统,正因为有了它的存在,那就有了HDFS(Hadoop的文件系统),这个系统在它们的关系,它们的原理是什么,我们重点给大家这个介绍。

第二篇是MapReduce,是一种计算模型,处理大数据?它的来源是什么?它的来源是PageRank这个问题,什么是PageRank,为什么有了PageRank这种问题就有了MapReduce的计算模型呢?
这是谷歌的第二篇论文。

第三篇论文叫做BigTable,翻译成中文就叫做大表,正因为有了这个思想的提出,就有了NoSQL 数据库,叫做HBace,那么咱们的讲义上第十章讲的就是HBace,它依据的来源就是谷歌的BigTable,这个东西我们必须要非常清楚地知道。

第二章,第二章就来介绍一下实验环境,现在我们把之前画这个图带给大家补充完整,那么咱们可以看一下上次课画了一个实验环境,你看我们只是把Linux的部分给大家画出来了,对那还剩下很多的部分。

从上往下说,第三个叫flume,在第12章就会讲这个flume。

既然要讲这个东西,你是不是需要把这个flume给他装上?flume是个日志采集工具,有这么个印象就可以。

接着看下面的这个这叫Hive,是一个基于HDFS的hadoop的数据仓库,第八章讲的就是Hive,既然要讲这个东西,就需要把它给装好。

接着看下面的这个Strom,实时计算系统,就类似我们的自来水厂在源源不断地处理数据处理我的自来水,第17章讲Strom,需要把他给装上。

接着往下面说,下面这个叫hadoop-2.7.3,是hadoop安装包,后面就带着大家一起一步一步的去把它给装上。

下面的这个这个是hadoop的eclipse插件,把这个插件装上以后,你可以图形化的方式去访问你的HDFS,下面的这个大家做个了解,这个是hadoop的本地库,你知道就可以了,可能会用不到这个。

接下来看下面的HBace,正因为有了bigtable的思想,就有了一个NoSQL的数据库,就是HBase,怎么装,那安装包是哪一个?就是hbase-1.3.1-bin,后面我们都会带着大家一起来安装好。

接着看下面的这个hue,是一个图形管理工具,你把这个东西装上以后,你就可以以图形化的方式来管理大数据,讲义上有,装好了以后它的是一个基于网页的这种方式。

现在我们接着介绍这个实验法环境,好JDK 就不用说了。

接下来是MySQL数据库,我们会用到,所以我们需要来安装一个MySQL。

那MySQL会在哪里用到,我们给大家讲hive的时候要去学习使用MySQL数据库。

在讲义第八章,你要安装这个hive 的时候,你首先需要配MySQL数据库怎么配到时候都会给大家做详细的介绍。

接着往下面看这个pig,翻译成猪,但它跟猪没有任何关系,是基于数据分析工具,第九章介绍pig。

所以这些实验的介质跟章节都是一一对应的,这是一个ftp的工具,那么最后的这两个,先说ZooKeeper它相当于是一个数据库,那
么我们使用ZooKeeper实现HA,大家先不要管什么叫HA,那么我们会在后面会给大家讲这东西,看一下第14章是不是想的就是讲ZooKeeper使用做keep来干嘛呢?看第15章那我们使用ZooKeeper实现HA的功能,我来说这是ZooKeeper的安装包。

那上面的这个ZooInspector,ZK代表ZooInspector,它是客户端,并且是一个图形客户端。

那通过图形化的方式,你可以登录到ZooKeeper上面来查看的数据。

那么讲到这里时就详细的给大家介绍了整套的实验环境当中都给大家提供的东西,这些对应的实验环境跟讲义课程的内容是一一对应的。

接下来我就进入第三章课程的学习,这部分内容非常的重要,我们重点会给大家介绍体系结构,因为我刚才说了学习大数据学它的原理运行机制和体系结构,那么体系结构我们也会通过画图的方式来给大家解决。

hadoop体系结构,总的来说是三大块:
第一块就是hdfs,那么它的体系结构那是什么样的?他写全叫做hadoop district distributed file system,hadoop的布式文件系统。

第二块它是yarn,它是在运行MapReduce程序,作为一个MapReduce程序来说,它不能直接独立的运行,它必须要发布到或者提交到yarn平台上才能运行,就类似于你要访问一个jsp,必须要把这个jsp部署到tomcat服务器中才能运行,同样道理MapReduce就是需要部署到yarn上才能运行,这是在体系结构当中要给大家讨论的第二部分内容。

第三块是Hbase体系结构,那这三部分实际上就组成了整个的hadoop核心的部分。

那么我们都会来详细的给大家通过画图的方式来给大家做一个详细的介绍,在大数据的里面它都是一种什么结构?准确点说是主从结构,因为会有主节点和从节点,那么先把这些概念先都给大家提出来对。

首先对于HDFS这个来讲对,主节点叫NameNode,(名词提出来了以后大家能够记住多少就记住多少),从节点DataNode,那实际上对于HDFS还有一个组成部分叫SecondaryNameNode,咱们先对这些结构的名词做一个了解。

然后Yarn也是一种主从结构,主节点是ResourceManager,那么从节点叫NodeManager,这是Yarn。

对于这个HBase来说,它也是一种主从结构,主节点叫HMaster,从这点叫RegionServer。

所以这些名词和概念如果大家第一次接触的话,需要一定时间慢慢的去掌握,主要这个地方咱们就给他把这些名词第一次的给大家提出来。

我们把前面的这些理论的知识包括它的原理都掌握了,以后接下来咱们就可以进行第四章hadoop的安装和配置,那么hadoop的安装配置有三种模式:
第一种叫本地模式,第二种模式叫尾分布模式,第三种模式叫全分布模式,那在每一种模式下它们的特点是不一样的,我们都需要去学会安装和配置。

相关文档
最新文档