Hadoop_Ubuntu学习笔记

合集下载

云计算学习笔记Hadoop+HDFS和MapReduce+架构浅析 34 IT168文

云计算学习笔记Hadoop+HDFS和MapReduce+架构浅析   34   IT168文

云计算学习笔记Hadoop+HDFS和MapReduce+架构浅析 34IT168文云计算学习笔记hadoop+hdfs和mapreduce+架构浅析-34-it168文hadoophdfs和mapreduce架构浅析前言hadoop是一个基于java的分布式密集数据处理和数据分析的软件框架。

hadoop在很大程度上是受google在2021年白皮书中阐述的mapreduce技术的启发。

mapreduce工作原理是将任务分解为成百上千个小任务,然后发送到计算机集群中。

每台计算机再传送自己那部分信息,mapreduce则迅速整合这些反馈并形成答案。

简单来说,就是任务的分解和结果的合成。

hadoop的扩展性非常杰出,hadoop可以处置原产在数以千计的低成本x86服务器排序节点中的大型数据。

这种高容量低成本的女团引人注目,但hadoop最迎合人的就是其处置混合数据类型的能力。

hadoop可以管理结构化数据,以及诸如服务器日志文件和web页面上涌的数据。

同时还可以管理以非结构化文本为中心的数据,如facebook和twitter。

1hadoop基本架构hadoop并不仅仅是一个用于存储的分布式文件系统,而是在由通用计算设备组成的大型集群上执行分布式应用的框架。

apachehadoop项目中包含了下列产品(见图1)。

图1hadoop基本共同组成pig和hive是hadoop的两个解决方案,使得在hadoop上的编程更加容易,编程人员不再需要直接使用javaapis。

pig可加载数据、转换数据格式以及存储最终结果等一系列过程,从而优化mapreduce运算。

hive在hadoop中饰演数据仓库的角色。

hive需向hdfs嵌入数据,并容许采用相似sql的语言展开数据查阅。

chukwa就是基于hadoop集群的监控系统,直观来说就是一个watchdog。

hbase就是一个面向列于的分布式存储系统,用作在hadoop中积极支持大型稠密表的列存储数据环境。

Hadoop学习总结

Hadoop学习总结

Hadoop学习总结HDFS相关HDFS写数据的流程⾸先由客户端向NameNode服务发起写数据请求NameNode收到请求后会进⾏基本验证验证类容包括对请求上传的路径进⾏合法验证对请求的⽤户进⾏权限验证验证没有问题后,NameNode会响应客户端允许上传接下来客户端会对⽂件按照blocksize⼤⼩进⾏切块,切完后依次以块为单位上传此时客户端会请求上传第⼀个块信息服务端接到上传请求后会依据HDFS默认机架感知原理,返回3台存放数据块副本的DataNode机器客户端收到机器列表后会依据⽹络拓扑原理找到其中⼀台机器进⾏传输通道的建⽴然后依次和三台机器进⾏串⾏连接这样的连接主要是为了减轻客户端本地IO的压⼒当通道建⽴成功后,客户端会通过HDFS的FSOutputStream流对象进⾏数据传输数据传输的最⼩单位为packet传输过程中每台DataNode服务器串⾏连接,依次将数据传递最后⼀个数据块被传输完成后相当于⼀次写⼊结束,如果还有数据块要传输,那就接着传输第⼆个数据块HDFS读数据的流程和写数据⼀样,由客户端向NameNode发出请求NameNode收到请求后会进⾏⽂件下载路径的合法性以及权限验证如果验证没问题,就会给客户端返回⽬标⽂件的元数据信息信息中包含⽬标⽂件数据块对应的DataNode的位置信息然后客户端根据具体的DataNode位置信息结合就近原则⽹络拓扑原理找到离⾃⼰最近的⼀台服务器对数据进⾏访问和下载最后通过HDFS提供的FSInputStream对象将数据读取到本地如果有多个块信息就会请求多次DataNode直到⽬标⽂件的全部数据被下载HDFS的架构及每个服务的作⽤HDFS是Hadoop架构中负责完成数据分布式存储管理的⽂件系统⾮⾼可⽤集群⼯作时会启动三个服务,分别是NameNode、DataNode以及SecondaryNameNode其中NameNode是HDFS的中⼼服务,主要维护管理⽂件系统中的⽂件的元数据信息DataNode主要负责存储⽂件的真实数据块信息DataNode的数据块信息中也包含⼀些关于当前数据块的元数据信息,如检验值,数据长度,时间戳等在⾮⾼可⽤HDFS集群中,NameNode和DataNode可以理解为是⼀对多的关系⼆者在集群中也要保存通信,通常默认3秒钟会检测⼀下⼼跳最后SecondaryNameNode的⼯作很单⼀,就是为了给NameNode的元数据映像⽂件和编辑⽇志进⾏合并,并⾃⼰也保留⼀份元数据信息,以防NameNode元数据丢失后有恢复的保障HDFS中如何实现元数据的维护NameNode的元数据信息是通过fsimage⽂件 + edits编辑⽇志来维护的当NameNode启动的时候fsimage⽂件和edits编辑⽇志的内容会被加载到内存中进⾏合并形成最新的元数据信息当我们对元数据进⾏操作的时候,考虑到直接修改⽂件的低效性,⽽不会直接修改fsimage⽂件⽽是会往edits编辑⽇志⽂件中追加操作记录当满⾜⼀定条件时,会让Secondary NameNode来完成fsimage⽂件和edits编辑⽇志⽂件的合并Secondary NameNode⾸先会让NameNode停⽌对正在使⽤的edits编辑⽇志⽂件的使⽤,并重新⽣成⼀个新的edits编辑⽇志⽂件接着把NameNode的fsimage⽂件和已停⽌的edits⽂件拷贝到本地在内存中将edits编辑⽇志⽂件的操作记录合并到fsimage⽂件中形成⼀个最新的fsimage⽂件最后会将这个最新的fsimage⽂件推送给NameNode并⾃⼰也备份⼀份NN和DN的关系,以及DN的⼯作流程从数据结构上看,就是⼀对多的关系⼀个HDFS集群中只能有⼀个NameNode⽤于维护元数据信息,同时会有多个DataNode⽤于存储真实的数据块当HDFS集群启动的时候,会⾸先进⼊到安全模式下在安全模式下我们只能对数据进⾏读取不能进⾏任何写操作此时集群的每⼀台DataNode会向NameNode注册⾃⼰注册成功后DataNode会上报⾃⼰的数据块详细信息当数据块汇报满⾜最⼩副本条件后,会⾃动退出安全模式此后DataNode和NameNode每三秒会通信⼀次,如果NameNode检测到DataNode没有响应,会继续检测⼀直到10分30秒后还没有检测到,就确定当前的DataNode不可⽤MapReduce相关⼿写MR的⼤概流程和规范MR程序的结构可以分为3部分,⼀是程序的执⾏⼊⼝,通常简称为驱动类驱动类主要编写MR作业的提交流程以及⾃定义的⼀些配置项⼆是Map阶段核⼼类,需要⾃定义并继承Mappper类,重写Mapper中的map⽅法在map⽅法中编写⾃⼰的业务逻辑代码将数据处理后利⽤context上下⽂对象的写出落盘三是Reduce阶段的核⼼类,同时也需要继承Hadoop提供的Reducer类并重写reduce⽅法在reduce⽅法中编写⾃⼰的业务逻辑代码,处理完数据后通过context上下⽂对象将数据写出,这也就是最终的结果⽂件如何实现Hadoop的序列化,Hadoop的序列化和Java的序列化有什么区别⾸先,序列化是把内存中的Java对象转化成⼆进制字节码,反序列化是将⼆进制字节码转化成Java对象通常我们在对Java对象进⾏磁盘持久化写⼊或将Java对象作为数据进⾏⽹络传输的时候需要进⾏序列化相反如果要将数据从磁盘读出并转化成Java对象需要进⾏反序列化实现Hadoop中的序列化需要让JavaBean对象实现Writable接⼝,并重写wirte()⽅法和readFields()⽅法其中wirte()是序列化⽅法,readFields()⽅法是反序列化⽅法Hadoop序列化和Java序列化的区别在于,java序列化更重量级Java序列化后的结果不仅仅⽣成⼆进制字节码⽂件,同时还会针对当前Java对象⽣成对应的检验信息以及集成体系结构这样的话,⽆形中我们需要维护更多的数据但是Hadoop序列化不会产⽣除了Java对象内部属性外的任何信息,整体内容更加简洁紧凑,读写速度相应也会提升很多,这也符合⼤数据的处理背景MR程序的执⾏流程MR程序执⾏先从InputFormat类说起,由InputFormat负责数据读⼊,并在内部实现切⽚每个切⽚的数据对应⽣成⼀个MapTask任务MapTask中按照⽂件的⾏逐⾏数据进⾏处理,每⼀⾏数据会调⽤⼀次我们⾃定义的Mapper类的map⽅法map⽅法内部实现具体的业务逻辑,处理完数据会通过context对象将数据写出到磁盘,接下来ReduceTask会开始执⾏⾸先ReduceTask会将MapTask处理完的数据结果拷贝过来每组相同key的values会调⽤⼀次我们⾃定义Reducer类的reduce⽅法当数据处理完成后,会通过context对象将数据结果写出到磁盘上InputFormat负责数据写份时候要进⾏切⽚,为什么切⽚⼤⼩默认是128M⾸先切⽚⼤⼩是可以通过修改配置参数来改变的,但默认情况下是和切块blocksize⼤⼩⼀致这样做的⽬的就是为了在读取数据的时候正好能⼀次性读取⼀个块的数据,避免了在集群环境下发⽣跨机器读取的情况如果跨机器读取会造成额外的⽹络IO,不利于MR程序执⾏效率的提升描述⼀下切⽚的逻辑MR中的切⽚是发⽣在数据读⼊的阶段中,所以我们要关注InputFormat的实现通过追溯源码,在InputFormat这个抽象类中有⼀个getSplits(),这个⽅法就是实现切⽚的具体逻辑⾸先关注两个变量,分别是minSize和maxSize,默认情况minSize = 1,maxSize = Long.MAX_VALUE源码中声明了⼀个集合List splits = new ArrayList(),⽤于装载将来的切⽚对象并返回接下来根据提交的job信息获取到当前要进⾏切⽚的⽂件详情⾸先判断当前⽂件是否可以进⾏切分,这⼀步主要考虑到⼀些不⽀持切分的压缩⽂件不能进⾏切⽚操作,否则就破坏了数据的完整性如果当前⽂件可以切⽚的话,就要计算切⽚的⼤⼩切⽚的⼤⼩⼀共需要三个因⼦,分别是minSize、maxSize、blocksize最后通过Math.max(minSize,Math.min(maxSize,blocksize)),计算逻辑获取到切⽚的⼤⼩默认情况下切⽚⼤⼩和数据块⼤⼩⼀致如果想要改变切⽚的⼤⼩可以通过修改mapreduce.input.fileinputformat.split.minsize(把切⽚调⼤)、mapreduce.input.fileinputformat.split.maxsize(把切⽚调⼩)两个参数实现获取到切⽚⼤⼩后继续往下执⾏,在最终完成切⽚之前还有⼀个关键判断就是判断剩余⽂件是否要进⾏切⽚CombineTextInputFormat机制是怎么实现的CombineTextInoutFormat是InputFormat的⼀个实现类,主要⽤于解决⼩⽂件场景⼤概思路是先在Job提交中指定使⽤InputFormat的实现类为CombineTextInputFormat接下来的切⽚过程中会先把当前⽂件的⼤⼩和设置的切⽚的最⼤值进⾏⽐较如果⼩于最⼤值,就单独划分成⼀块如果⼤于切⽚的最⼤值并⼩于两倍的切⽚的最⼤值,就把当前⽂件⼀分为⼆划分成两块以此类推逐个对⽂件进⾏处理,这个过程称之为虚拟过程最后⽣成真正的切⽚的时候,根据虚拟好的⽂件进⾏合并只要合并后⽂件⼤⼩不超过最开始设置好的切⽚的最⼤值那就继续追加合并直到达到设置好的切⽚的最⼤值此时就会产⽣⼀个切⽚,对应⽣成⼀个MapTaskShuffle机制流程当MapTask执⾏完map()⽅法后通过context对象写数据的时候开始执⾏shuffle过程⾸先数据先从map端写⼊到环形缓冲区内写出的数据会根据分区规则进⼊到指定的分区,并且同时在内存中进⾏区内排序环形缓冲区默认⼤⼩为100M当数据写⼊的容量达到缓冲区⼤⼩的80%,数据开始向磁盘溢写如果数据很多的情况下,可能发⽣N次溢写这样在磁盘上就会产⽣多个溢写⽂件,并保证每个溢写⽂件中区内是有序的到此shuffle过程在Map端就完成了接着Map端输出的数据会作为Reduce端的数数据再次进⾏汇总操作此时ReduceTask任务会把每⼀个MapTask中计算完的相同的分区的数据拷贝到ReduceTask的内存中,如果内存放不下,开始写⼊磁盘再接着就是对数据进⾏归并排序,排序完还要根据相同的key进⾏分组将来⼀组相同的key对应的values调⽤⼀次reduce⽅法,如果有多个分区就会产⽣多个ReduceTask来处理,处理的逻辑都⼀样MR程序中由谁来决定分区的数量,哪个阶段环节会开始往分区中写数据在Job提交的时候可以设置ReduceTask的数量ReduceTask的数量决定分区的编号默认有多少ReduceTask任务就会产⽣多少个分区在Map阶段的map⽅法中通过context.wirte()往外写数据的时候其实就是在往指定的分区中写数据了阐述MR中实现分区的思路默认情况下不指定分区数量就会有⼀个分区如果要指定分区,可以通过在Job提交的时候指定ReduceTask的数量来指定分区的数量从Map端处理完数据后,数据就会被溢写到指定的分区中决定kv数据究竟写到哪个分区中是通过Hadoop提供的Partitioner对象控制的Partitioner对象默认实现HashPartitioner类它的规则就是⽤当前写出数据的key和ReduceTask的数量做取余操作,得到的结果就是当前数据要写⼊的分区的编号除此之外,我们也可以⾃定义分区器对象需要继承Hadoop提供的Partitioner对象,然后重写getPartitioner()⽅法在该⽅法中根据⾃⼰的业务实现分区编号的返回最后再将我们⾃定义的分区器对象设置到Job提交的代码中覆盖默认的分区规则Hadoop中实现排序的两种⽅案分别是什么第⼀种⽅式是直接让参与⽐较的对象实现WritableComparable接⼝并指定泛型接下来实现CompareTo()⽅法,在该⽅法中实现⽐较规则即可第⼆种⽅式是⾃定义⽐较器对象,需要继承WritableComparator类,重写它的compare⽅法在构造器中调⽤⽗类对当前的要参与⽐较的对象进⾏实例化当前要参与⽐较的对象必须要实现WritableComparable接⼝最后在Job提交代码中将⾃定义的⽐较器对象设置到Job中就可以了编写MR的时候什么情况下使⽤Combiner,实现的具体流程是什么Combiner在MR中是⼀个可选流程,通常也是⼀种优化⼿段当我们执⾏完Map阶段的计算后数据量⽐较⼤,kv组合过多这样在Reduce阶段执⾏的时候会造成拷贝⼤量的数据以及汇总更多的数据为了减轻Reduce的压⼒,此时可以选择在Map阶段进⾏Combiner操作,将⼀些汇总⼯作提前进⾏OutputFormat⾃定义实现流程OutputFormat是MR中最后⼀个流程,它主要负责数据最终结果的写出如果对最终输出结果⽂件的名称或者输出路径有个性化需求,就可以通过⾃定义OutputFormat来实现⾸先⾃定义⼀个OutputFormat类,然后继承OutputFormat重写OutputFormat的getRecordWriter()⽅法,在该⽅法中返回RecordWriter对象由于RecordWriter是Hadoop内部对象,如果我们想实现⾃⼰的逻辑,还得⾃定义⼀个RecordWriter类,然后继承RecordWriter类重写该类中的write()⽅法和close()⽅法MR实现MapJoin的思路,MapJoin的局限性是什么Mapjoin解决了数据倾斜给Reduce阶段带来的问题⾸先MapJoin的前提就是我们需要join的两个⽂件⼀个是⼤⽂件,⼀个是⼩⽂件在此前提下,我们可以将⼩的⽂件提前缓存到内存中,然后让Map端直接处理⼤⽂件每处理⼀⾏数据就根据当前的关联字段到内存中获取想要的数据,然后将结果写出。

ubuntu学习linux笔记

ubuntu学习linux笔记

使用Xshell连接UbuntuXshell是一个安全终端模拟软件,可以进行远程登录。

我使用XShell的主要目的是在Windows环境下登录Linux终端进行编码,非常方便。

本文简单介绍下它的使用方法。

1.下载后在安装时选择个人/学校免费版即可。

2.安装完毕后先在要连接的Ubuntu主机下开启SSH服务,如果没有开启需要安装openssh-server:sudo apt-get install openssh-server使用ps -e | grep ssh,如果只有ssh-agent表示还没启动,需要/etc/init.d/ssh start;有sshd说明已启动。

3.打开Xshell,选择“新建”,“连接”设置里选择SSH,主机填入需要连接的主机的IP 地址。

在“用户身份验证”中填入可用的登录Ubuntu的用户名和密码。

设置完这两步就可以使用XShell控制Ubuntu主机了。

4.中文乱码的解决方法:在确认Ubuntu支持中文的前提下(即,直接使用Ubuntu可以显示中文),在“文件”菜单的“属性”中选择“终端”,“编码”选择“UTF-8”,并勾选“韩中日语言中的不确定字符处理为宽字符”,重新连接即可。

还有一种解决方式,不过本人没有试过(/s/blog_65d642220100kjqi.html):[root@localhost ~]# cd /etc/sysconfig/[root@localhost sysconfig]# cp i18n i18n.bak #备份i18n文件[root@localhost sysconfig]# echo "" >i18n[root@localhost sysconfig]# vi i18n #加入以下内容LANG="zh_CN.GB18030"LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en" SYSFONT="lat0-sun16"重新连接后中文显示正常Linux 防火墙关闭启用1) 重启后生效开启:chkconfig iptables on关闭:chkconfig iptables off2) 即时生效,重启后失效开启:service iptables start关闭:service iptables stop安装JDK--快速安装jdk:Sudo apt-get install openjdk-7-jdk2、查看ip#ifconfig -a3、Ubuntu下su:authentication failure的解决办法切换root用户,第一开始root用户是禁用的,需要重置密码#sudo passwd root4、安装vim使用命令sudo apt-get install vim5、安装JDK上传jdk然后执行# tar -xf all.tar这条命令是解出all.tar包中所有文件,-x是解开的意思6、移动当前文件夹到执行的文件夹下mv /home/jdk1.7.0_55 /usr/lib/jvm7、执行命令sudo vim ~/.bashrc8、文件的末尾追加下面内容:#set oracle jdk environmentexport JAVA_HOME=/usr/lib/jvm/jdk1.7.0_55## 这里要注意目录要换成自己解压的jdk 目录export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH9、使环境变量马上生效source ~/.bashrc10、java –version安装redisRedis单例搭建1、上传:/home/redis-3.0.0.tar.gz2、解压:tar xf redis-3.0.0.tar.gz3、进入/home/redis-3.0.0执行命令编译redis代码#make4、安装redis#make install PREFIX=/usr/local/redis5、进入/usr/local/redis/bin启动redis#./redis-sercer6、后台运行redis还得需要修改配置文件redis.conf1、从源目录redis-3.0.0文件夹中复制redis.conf到/usr/local/redis/bin下复制命令:cp /home/redis-3.0.0/redis.conf /usr/local/redis/bin2、后台启动redis用配置文件的形式启动命令3、#./redis-server redis.conf7、查看redis是否启动成功#redis-sercer status8、关闭redis服务#redis-sercer stop9、存放redis值命令Set key velue#set zhang zhangzhisheng10、取出redis中存放的值Get key#get zhangRedis集群搭建1、首先创建redis-cluster文件夹#mkdir redis-cluster2、然后把编译安装好的redis/bin拷贝到到mkdir redis-cluster/redis01#cp –r redis/binredis-cluster/redis013、修改redis当前为集群模式Vim redis.conf搜索cluster-enabled yes把这段注释去掉4、然后复制redis01的文件夹6分,然后修改端口分别为7001-70065、编写批处理文件Vim start-all.sh#内容cd redis01./redis-server redis.confcd ..cd redis02./redis-server redis.confcd ..cd redis03./redis-server redis.confcd ..cd redis04./redis-server redis.confcd ..cd redis05./redis-server redis.confcd ..cd redis06./redis-server redis.confcd ..6、赋予start-all.sh#chmod +x start-all.sh7、然后启动所有的redis./start-all.sh8、查看redis是否都启动#ps –aux|grep redis安装rubu使用ruby脚本语言来搭建redis集群1、下载ruby-1.9.2-p290.tar.gzftp:///pub/ruby/1.9/ruby-1.9.2-p290.tar.gz 2、解压,然后进入目录编译执行#./configure --prefix=/usr/local/ruby3、然后执行安装命令make && sudo make install5、配置环境设置$ sudo vi /etc/environment在最后加上ruby的环境PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/r uby/bin"6、立即让e nvironment生效source /etc/environment7、#ruby –v8、确认安装成功后通过一下命令添加命令链接,目前我也不清楚创建这些链接的目的是什么,按照Ruby“约定大于配置”的原则,应该是一种约定。

在linux中安装Hadoop教程-伪分布式配置-Hadoop2.6.0-Ubuntu14.04

在linux中安装Hadoop教程-伪分布式配置-Hadoop2.6.0-Ubuntu14.04

在linux中安装Hadoop教程-伪分布式配置-Hadoop2.6.0-Ubuntu14.04注:该教程转⾃厦门⼤学⼤数据课程学习总结装好了 Ubuntu 系统之后,在安装 Hadoop 前还需要做⼀些必备⼯作。

创建hadoop⽤户如果你安装 Ubuntu 的时候不是⽤的 “hadoop” ⽤户,那么需要增加⼀个名为 hadoop 的⽤户。

⾸先按 ctrl+alt+t 打开终端窗⼝,输⼊如下命令创建新⽤户 : sudo useradd -m hadoop -s /bin/bash这条命令创建了可以登陆的 hadoop ⽤户,并使⽤ /bin/bash 作为 shell。

sudo命令 本⽂中会⼤量使⽤到sudo命令。

sudo是ubuntu中⼀种权限管理机制,管理员可以授权给⼀些普通⽤户去执⾏⼀些需要root权限执⾏的操作。

当使⽤sudo命令时,就需要输⼊您当前⽤户的密码.密码 在Linux的终端中输⼊密码,终端是不会显⽰任何你当前输⼊的密码,也不会提⽰你已经输⼊了多少字符密码。

⽽在windows系统中,输⼊密码⼀般都会以“*”表⽰你输⼊的密码字符 接着使⽤如下命令设置密码,可简单设置为 hadoop,按提⽰输⼊两次密码: sudo passwd hadoop可为 hadoop ⽤户增加管理员权限,⽅便部署,避免⼀些对新⼿来说⽐较棘⼿的权限问题: sudo adduser hadoop sudo最后注销当前⽤户(点击屏幕右上⾓的齿轮,选择注销),返回登陆界⾯。

在登陆界⾯中选择刚创建的 hadoop ⽤户进⾏登陆。

更新apt⽤ hadoop ⽤户登录后,我们先更新⼀下 apt,后续我们使⽤ apt 安装软件,如果没更新可能有⼀些软件安装不了。

按 ctrl+alt+t 打开终端窗⼝,执⾏如下命令: sudo apt-get update后续需要更改⼀些配置⽂件,我⽐较喜欢⽤的是 vim(vi增强版,基本⽤法相同) sudo apt-get install vim安装SSH、配置SSH⽆密码登陆集群、单节点模式都需要⽤到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上⾯运⾏命令),Ubuntu 默认已安装了SSH client,此外还需要安装 SSH server: sudo apt-get install openssh-server安装后,配置SSH⽆密码登陆利⽤ ssh-keygen ⽣成密钥,并将密钥加⼊到授权中: exit # 退出刚才的 ssh localhost cd ~/.ssh/ # 若没有该⽬录,请先执⾏⼀次ssh localhost ssh-keygen -t rsa # 会有提⽰,都按回车就可以 cat ./id_rsa.pub >> ./authorized_keys # 加⼊授权此时再⽤ssh localhost命令,⽆需输⼊密码就可以直接登陆了。

详解Ubuntu16.04下Hadoop2.7.3的安装与配置

详解Ubuntu16.04下Hadoop2.7.3的安装与配置

详解Ubuntu16.04下Hadoop2.7.3的安装与配置⼀、Java环境搭建(1)下载JDK并解压(当前操作系统为Ubuntu16.04,jdk版本为jdk-8u111-Linux-x64.tar.gz)新建/usr/java⽬录,切换到jdk-8u111-linux-x64.tar.gz所在⽬录,将这个⽂件解压缩到/usr/java⽬录下。

tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/java/(2)设置环境变量修改.bashrc,在最后⼀⾏写⼊下列内容。

sudo vim ~/.bashrcexport JAVA_HOME=/usr/java/jdk1.8.0_111export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH运⾏如下命令使环境变量⽣效。

source ~/.bashrc打开profile⽂件,插⼊java环境配置节。

sudo vim /etc/profileexport JAVA_HOME=/usr/java/jdk1.8.0_111export JAVA_BIN=$JAVA_HOME/binexport JAVA_LIB=$JAVA_HOME/libexport CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jarexport PATH=$JAVA_HOME/bin:$PATH打开environment ⽂件,追加jdk⽬录和jdk下的lib的⽬录,如下所⽰。

sudo vim /etc/environment复制代码代码如下:PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/java/jdk1.8.0_111/lib:/usr/java/jdk1.8.0_111"使配置⽣效source /etc/environment验证java环境是否配置成功java -version⼆、安装ssh-server并实现免密码登录(1)下载ssh-serversudo apt-get install openssh-server(2)启动sshsudo /etc/init.d/ssh start(3)查看ssh服务是否启动,如果有显⽰相关ssh字样则表⽰成功。

Hadoop学习笔记

Hadoop学习笔记

Hadoop学习第一章初识Hadoop分布式计算平台—核心—>HDFS(分布式文件系统)和MapReduce(Google MR开源实现)作用:有效存储和管理大数据优势:* 高可靠按位存储和处理数据能力高* 高扩展使用计算机集簇分配数据并计算,集簇便扩展* 高效能在节点间动态移动数据,并保持个节点动态平衡,故处理速度极快* 高容错能自动保存数据的多副本,自动将失败任务重新分配结构:Pig Chukwa Hive HBase核心MapReduce HDFS ZooKeeper基础API Core Avro* Core 提供常用工具API*Avro 数据序列化系统提供数据结构类型、快可压二进制格式、存储文件集简单调用语言*MapReduce 并行*HDFS 分布式文件系统*Chukwa 数据收集*Hive 整理、存储查询数据集工具支持传统RDBMS的SQL语句查询*HBase 分布式、面向列的开源数据库适合存储非结构化数据基于列模式*Pig 经受住大数据处理的平台体系:*HDFS 分布式底层存储支持主从模式NameNode和DataNode一对多NN 主服务器,管理文件系统及客户对其的操作DN 管理存储数据,受NameNode调度进行相应操作,1文件1组DateNode 关系图如下*MapReduce 分布式并行任务处理支持并行编程模式,将任务分发到多台机器的集群上,以高容错方式并行处理大数据集的框架主节点JobTracker集节点TaskTracker数据管理:* HDFS数据管理NameNode-DataNode-Client补充:一个Block会有三份备份;写入文件时,客户端读取一个Block,然后写到第一个DataNode上,接着备份至其他DataNode,知道所有需要此Block的DataNode都成功写入才写下一个Block* HBase数据管理HClient-HMaste-HRgionr 结构图Table & Column FamilyRow Key TimestampColumn FamilyURI Parserr1 t3 url= title=天天特价t2 host=t1r2t5 url= content=每天…t4 host=Ø Row Key: 行键,Table的主键,Table中的记录按照Row Key排序Ø Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version numberØ Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family 中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。

Ubuntu 12基础命令学习

Ubuntu 12基础命令学习

Ubuntu基本命令学习教程目录预备知识:Ubuntu打开终端Terminal (1)一.目录结构 (2)二. ls (3)三. ls详解 (6)四.计算机信息 (9)五.文件管理 (11)六.目录管理 (12)七.磁盘管理 (13)八.用户管理 (15)九.进程管理 (16)十.系统管理 (18)十一.网络管理 (20)十二.启动管理 (23)十三.压缩包管理 (24)十四.任务管理 (26)十五.关机命令 (27)十六.U盘挂载卸载 (27)预备知识:Ubuntu打开终端Terminal以下是两个方法:1、Ctrl + Alt + T 快捷键直接打开。

2、通过dash home这个按钮,输入te,就可以看到Terminal终端的选项了,如下图:ubuntu_dash_home_打开终端Tips:这个dash home非常有用,最近浏览的文件、系统软件都能在这里索引到。

在终端上右键,选“Lock to launcher”这样就锁定在左侧了,需要用时,直接点就打开了。

一.目录结构bin:是一些可执行成程序,是一些命令程序,普通用户可以使用sbin:超级用户可使用的命令程序,超级用户是rootboot:Ubuntu的内核文件dev:在linux中把设备映射为文件,存放在dev中etc:系统配置文件和系统启动配置文件home:用户存放目录lib:放置动态库mnt:通常用来挂载不同的设备proc:是内存中的一个目录,存储设备的信息,如CUP、内存tmp:是一个临时目录usr:是一个应用程序存放目录,src指的是源文件var:存储一些变动的信息,如log文件二. 最基本命令使用1.绝对路径从根开始,以/ 为起始如:/home/user1/abc.txr相对路径如:user1/abc.txr2.使用帮助1)命令--help 是一个简单的帮助2)help 命令是较详细的帮助,准确点说是说明3)man 命令是较权威的帮助这会显示很多信息,按回车是每行显示,按空格是每页显示,按Q键退出3.使用技巧1)使用clear清屏2)按两下Tab键补全命令或补齐目录如果命令不唯一,就会列出所有命令,如果命令唯一了,就只列出那个命令4.ls列出文件目录1)列出当前目录列出指定文件的文件目录列出根目录2)ls -l 以长格式显示第一个指文件属于chen用户,第二个指属于chen组,大小是179字节如果是文件夹就不是它的长度,创建的时间,文件名或目录名3)ls –a显示所有文件包括隐藏文件在linux中所有以点(.)开头的文件或文件夹都是隐藏的,如:创建了一个不隐藏文件,然后查看它创建一个隐藏文件,然后用ls查看不到它,需要使用ls -a查看注意:使用ls –a显示出三个点,第一指定是当前目录简写,第二个指的是上层目录简写cd ..切换到上一层目录,cd .是切换到当前目录,cd是切换到当前用户目录使用pwd查看当前目录的路径4)ls把不同文件按不同的颜色显示出来,其实是把ls替换成其他命令当然我们也可以自己设置的,如:alias ubuntu=ls三. ls详解1.环境变量如:我们使用了ls命令,那个系统就会查找如下环境变量,一个目录一个目录的查询,一个冒号为一个目录,查找那个命令,找到之后就不在向下查找也可以用另一命令查看环境变量当前我们使用的ls命令属于那个目录,which命令是把着七个目录全部查找一遍,把所有的ls 都列出来2.ls –l的属性信息第一个是“-”说明是一个文件,如果是“d”(directory)是一个文件夹后面的分成三组前三个是指的用户chen的权限,r是读;w是写;x是执行,如果是文件夹则是指能打开,如果是文件则是指可执行文件;-是没有权限中间三个是指chen这个组的权限最后三个是指其他用户的权限这里可以查看一个文件权限设置3.更改权限先创建一个文件,然后查看其权限设置1)给其他用户增加w权限2)给组增加x权限3)删除其他用户r权限4)删除组的x权限4.其他的命令1)lsattr列出文件的高级属性2)lsusb查看系统有哪些usb设备查看更详细的介绍其中比较重要的是下列两个3)lspci查看系统中所有的pci接口和设配如果想查看更详细的介绍四.显示计算机信息命令1.CPUCPU的信息是存储在proc文件夹中的cpuinfo文件里processor(处理器的个数,有两个就一个一的显示)model name(型号)cpu MHZ(赫兹)cache size(缓存大小)flags(cpu可执行的指令)bogomips(cpu一秒运行的指令)2.内存memory的信息是存储在proc文件夹中的meminfo文件里这回显示很多信息,可以使用grep过滤另外也可以使用free查看memory的大小3.硬盘使用fdisk命令查看,不过前面要加上sudo命令,然后输入用户密码这里介绍了硬盘的大小和硬盘的分区,硬盘的分区类型(system)是根据Id来的4.显卡想查看更详细的信息是5.U盘6.驱动driver7.Kernel版本(uname)8.Ubuntu版本五.文件管理1.创建touch在当前文件夹下创建一个文件和一个隐藏文件,创建的文件大小为0kb在指定文件夹下创建文件,只要加上路径就可以了2.删除rm删除隐藏文件一次可以删除多个文件3.查看cat,less,moreLess和more与cat的意思是一样的,若果内容过多less会一屏一屏的显示,并且按↑是可以朝上查看,more和less一样,不过不能使用↑4.拷贝cpcp 要拷贝的文件存放位置和备份文件名其中点(.)指的是当前目录下5.列表ls6.改名mv直接改名,不过要注意后缀移动文件后改名7.查找findfind 查找位置–name 要查找的文件名要查找的文件名中我们可以使用通配符(*),不过要用双引号(“”)引起来在这里使用了sudo,因为要查找根目录需要有权限的六.目录管理1.创建目录mkdir(make directory)可以创建一个目录,或者同时创建多个目录2.删除目录rmdir,rm –r(remove directory)使用rmdir删除目录,可以使用相对路径或者绝对路径使用rm –r删除文件rmdir与rm –r的不同是rmdir不能删除非空目录3.当前目录pwd(print working directory)4.改变目录cd(change directory)cd .. 切换到上一层目录,cd切换到当前用户目录,cd 要切换的目录切换到想要的目录,cd -切回到上一个目录5.查看目录ls(list)6.拷贝cp –r7.改名mv8.查找find七.磁盘管理1.FS容量df(disk free)其中/dev/sda1中的a是指第一个磁盘,1是指第一个分区。

Ubuntu16.04下hadoop的安装与配置(伪分布式环境)

Ubuntu16.04下hadoop的安装与配置(伪分布式环境)

Ubuntu16.04下hadoop的安装与配置(伪分布式环境)⼀、准备1.1创建hadoop⽤户$ sudo useradd -m hadoop -s /bin/bash #创建hadoop⽤户,并使⽤/bin/bash作为shell$ sudo passwd hadoop #为hadoop⽤户设置密码,之后需要连续输⼊两次密码$ sudo adduser hadoop sudo #为hadoop⽤户增加管理员权限$ su - hadoop #切换当前⽤户为⽤户hadoop$ sudo apt-get update #更新hadoop⽤户的apt,⽅便后⾯的安装1.2安装SSH,设置SSH⽆密码登陆$ sudo apt-get install openssh-server #安装SSH server$ ssh localhost #登陆SSH,第⼀次登陆输⼊yes$ exit #退出登录的ssh localhost$ cd ~/.ssh/ #如果没法进⼊该⽬录,执⾏⼀次ssh localhost$ ssh-keygen -t rsa 输⼊完 $ ssh-keygen -t rsa 语句以后,需要连续敲击三次回车,如下图:其中,第⼀次回车是让KEY存于默认位置,以⽅便后续的命令输⼊。

第⼆次和第三次是确定passphrase,相关性不⼤。

两次回车输⼊完毕以后,如果出现类似于下图所⽰的输出,即成功:之后再输⼊:$ cat ./id_rsa.pub >> ./authorized_keys #加⼊授权$ ssh localhost #此时已不需密码即可登录localhost,并可见下图。

如果失败则可以搜索SSH免密码登录来寻求答案⼆、安装jdk1.7$ mkdir /usr/lib/jvm #创建jvm⽂件夹$ sudo tar zxvf jdk-7u80-linux-x64.tar.gz -C /usr/lib #/ 解压到/usr/lib/jvm⽬录下$ cd /usr/lib/jvm #进⼊该⽬录$ mv jdk1.7.0_80 java #重命名为java$ vi ~/.bashrc #给JDK配置环境变量注:其中如果权限不够,⽆法在相关⽬录下创建jvm⽂件夹,那么可以使⽤ $ sudo -i 语句进⼊root账户来创建⽂件夹。

unbantu-14.04操作命令学习笔记

unbantu-14.04操作命令学习笔记

unbantu-14.04操作命令学习笔记unbantu-14.04操作命令学习笔记:用户操作命令:1、创建hadoop用户组sudo addgroup hadoop2、添加用户 sudo adduser -ingroup hadoop hadoop3、修改用户权限sudo gedit /etc/sudoers 添加hadoop ALL=(ALL:ALL)ALL挂载文件命令:sudo mount -t vboxsf shareLinux /mnt/sharewin/挂载文件失败:1、cd /sbin2、sudo rm mount.vboxsf3、sudo ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf4、sudo mount -t vboxsf shareLinux /mnt/sharewin/安装软件:sudo apt-get install ssh复制、解压文件:mv hive-0.9.0.tar.gz /home/tangfayan/cd /home/tangfayantar -zxsf hive-0.9.0.tar.gz卸载软件:sudo apt-get remove ssh检查是否安装成功:ps aux | grep ssh创建新的文件: cd /workspacelssudo mkdir 文件名catetouch删除文件命令:sudo rm -r /home/picture编辑:gedit hello.c javac /home/tangfayan/workspace/exercise/hello.java编译:gcc -o hello hello.c java hello运行:./helloping :ifconfigssh的server启动运用:1.ssh 192.168.56.1022.sudo dhclienthadoop启动和结束:1、bin/hdfs namenode -format2、sbin/start-dfs.sh3、jps4、 bin/hdfs dfs -mkdir /user5、 bin/hdfs dfs -mkdir /user/tangfayan6、编译程序:bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar grep input output 'dfs[a-z.]+'7、查看结果:$ bin/hdfs dfs -get output output$ cat output/*View the output files on the distributed filesystem:$ bin/hdfs dfs -cat output/*8、结束进程:sbin/stop-dfs.shhadoop运行程序步骤:1、创建“/home/tangfayan”目录下文件夹“file”.(已完成)mkdir file2、接着讲需要处理的文件放到该目录下。

Ubuntu11.04环境下Hadoop的配置详细步骤

Ubuntu11.04环境下Hadoop的配置详细步骤

Ubuntu11.04 下hadoop 的环境配置详细步骤1, 【datanode 和 namenode 的机器环境配置,包括 ip jdk ssh 】1.1【IP 设置】/etc/hostname 里面写入机器的 名称/etc/hosts 里面,分 namenode 和datanode ,【127.0.1.1 ub999 ub999】这个千万不要写,写了后,总是在start-all.sh 时报 Name or service not knownstname ub002。

就是因为ub002这个机器hosts 里面写了 127.0.1.1 ub002 ub002 ,导致的,后来去掉了,就好了。

Datanode 节点 里面 只要写入 namenode 和本机的ip 和名称就可以了.如下: 【注意,修改后要重启机器,才能生效的 reboot ,然后相互ping 一下。

】1.2 【SSH 安装设置】Sudo apt-get install openssh-server openssh-client以上命令安装 完 ssh 。

1.2.1 namenode 访问datanode 时无密码访问处理,就是把 namenode 产生的公钥保存到 每个datanode 的 机器上,在namenode 的机器上产生密钥对:ssh-keygen -t rsa 执行完上面的命令后在 /root/.ssh/产生了2个文件:id_rsa.pub然后 生成公钥文件:cp id_rsa.pub authorized_keyschmod 755 .ssh [.ssh 目录必须有被读写权限]chmod 644 authorized_keys这2步chmod非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。

然后把authorized_keys这个文件里面的内容拷贝到每个datanode的机器上,如果这个机器上没有这个文件,那么要建立这个文件,如果有这个文件,那么只要把这2个文件里面的内容合并成一个文件就好了。

Hadoop学习笔记整理

Hadoop学习笔记整理

Hadoop学习笔记整理hadoop介绍Hadoop是什么?Hadoop是一个适合于大数据的分布式文件系统和并行执行环境,它让用户便捷地处理海量数据。

Hadoop的特点强大的扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。

成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。

这些服务器群总计可达数千个节点。

高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。

可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。

Hadoop的物理部署HDFS(hadoop文件系统)HDFS介绍HDFS为了做到可靠性(reliability)创建了多份数据块(data blocks)的复制(replicas),并将它们放置在服务器群的计算节点中(compute nodes),MapReduce就可以在它们所在的节点上处理这些数据了。

HDFS能做什么?1、存储并管理PB级数据2、处理非结构化数据3、注重数据处理的吞吐量(latency不敏感)4、应用模式为:write-once-read-many存取模式HDFS不适合做什么?1、存储小文件(不建议使用)2、大量的随机读(不建议使用)3、需要对文件的修改(不支持)HDFS的设计目标:假设:节点失效是常态理想:1. 任何一个节点失效,不影响HDFS服务2. HDFS可以自动完成副本的复制假设:write-once-read-many存取模式3、不支持文件并发写入4、不支持文件修改HDFS主要组件和功能组件功能NameNode DataNode存储元数据存储文件内容元数据保存在内存中文件内容保存在磁盘保存文件,block ,datanode之间的映射关系维护了block id到datanode本地文件的映射关系HDFS的架构文件1、文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)2、NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等3、DataNode在本地文件系统存储文件块数据,以及块数据的校验和4、可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。

hadoop学习总结

hadoop学习总结

Client1 Client2
Name Node
Secondary Name Node
5
4
13 Data Node
5
8
1
4
Data Node
5
4
......
2
3
Data Node
HDFS 的 NameNode 和 DataNode 是和文件存储关系比较大的两个角色。NameNode
是 HDFS 系 统 中 的 管 理 者 , DataNode 是 HDFS 中 保 存 数 据 的 节 点 。 下 面 我 结 合
Share Knowledge Share Happiness 打开视界,打开世界
我总觉得诗人和旅行者天生有共同的特质:他们一直在追寻着灵魂的升华。在这一过程中, 他们眼里可能看到了人间百态或者是人间天堂,基于此,才有诗之深情之切。这种感知生命 深度的起源,在于视界!
生命的维度远不止时间一维而已,一个多月之前距离现在已经有 30 多天的距离。如果我 们只看年龄,那么我真的比过去大了一个多月。但是,如果把知识这个维度引入生命,那么 一切都会产生奇妙的‘化学反应’。
3
工欲善其事必先利其器
Share Knowledge Share Happiness
Map/Reduce 程序来讲解文件存储在 HDFS 中,如何被运用的过程。
1.1 文件在 HDFS 的存储
我们将文件名为 test.txt(大小为 192MB)文件数据存放在 HDFS 的 http://localhost: 9010/user/sn/testdata 文件夹下 这时,HDFS 根据 test.txt 的大小和 HDFS 默认的数据快的大小(64MB)进行分片,HDFS 将 test.txt 文件分成 3 片。我们假设这三片的名称为 1,2,3. 我们假设我们的集群有四台机器,一台机器为 master,其他三台为 slave. Master 上的 NameNode 上保存着 Test.txt 的元数据信息,3 台 slave 上保存着 Test.txt 的具体数据信息。 具体如下图所示:

Ubuntu基础知识整理

Ubuntu基础知识整理

一文件系统Linux 和 Unix 文件系统被组织成一个有层次的树形结构。

文件系统的最上层是 /,或称为根目录。

在 Unix 和 Linux 的设计理念中,一切皆为文件——包括硬盘、分区和可插拔介质。

这就意味着所有其它文件和目录(包括其它硬盘和分区)都位于根目录中。

例如:/home/jebediah/cheeses.odt 给出了正确的完整路径,它指向 cheeses.odt 文件,而该文件位于 jebediah 目录下,该目录又位于 home 目录,最后,home 目录又位于根(/) 目录下。

在根 (/) 目录下,有一组重要的系统目录,在大部分 Linux 发行版里都通用。

直接位于根(/) 目录下的常见目录列表如下:/bin - 重要的二进制 (binary) 应用程序/boot - 启动 (boot) 配置文件/dev - 设备 (device) 文件/etc - 配置文件、启动脚本等 (etc)/home - 本地用户主 (home) 目录/lib - 系统库 (libraries) 文件/lost+found - 在根 (/) 目录下提供一个遗失+查找(lost+found) 系统/media - 挂载可移动介质 (media),诸如 CD、数码相机等/mnt - 挂载 (mounted) 文件系统/opt - 提供一个供可选的 (optional) 应用程序安装目录/proc - 特殊的动态目录,用以维护系统信息和状态,包括当前运行中进程(processes) 信息。

/root - root (root) 用户主文件夹,读作“slash-root”/sbin - 重要的系统二进制 (system binaries) 文件/sys - 系统 (system) 文件/tmp –临时(temporary)文件/usr –包含绝大部分所有用户(users)都能访问的应用程序和文件/var –经常变化的(variable)文件,诸如日志或数据库等二常用命令(一)文件目录类1、查看目录:lsls (List) 用不同颜色、经过排列的文本列出目录下的文件。

在 Ubuntu 上安装Hadoop-0.20.2 教程

在 Ubuntu 上安装Hadoop-0.20.2 教程

在Ubuntu 上安装Hadoop 教程实践环境:U buntu8.04+jdk1.6+hadoop-0.20.1 ( 三台实体机)机器名IP 作用Ubuntu01 192.168.0.4 NameNode 、master 、jobTrackerUbuntu02 192.168.0.3 DataNode 、slave 、taskTracker1 、安装ubuntu8.04更新源修改2 、安装jdk1.6sudo apt-get install sun-java6-jdk(物理机可能安装不上,直接下载jdk安装jdk-1_5_0_14-linux-i586.bin文件安装# chmod a+x jdk-1_5_0_14-linux-i586.bin ←使当前用户拥有执行权限# ./jdk-1_5_0_14-linux-i586.bin ←选择yes直到安装完毕)安装后,添加如下语句到/etc/profile 中:export JA VA_HOME=/usr/lib/jvm/java-6-sunexport JRE_HOME=/usr/lib/jvm/java-6-sun/jreexport CLASSPATH=.:$JA V A_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PA TH=$JA V A_HOME/bin:$JRE_HOME/bin:$PA TH注意:每台机器的java 环境最好一致。

安装过程中如有中断,切换为root 权限来安装。

(7 、安装hadoop下载hadoop-0.20.1.tar.gz :$ wget /apache-mirror/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz解压:$ tar -zvxf hadoop-0.20.2.tar.gz把Hadoop 的安装路径添加到/etc/profile 中:export HADOOP_HOME=/home/wl826214/hadoop-0.20.2export PA TH=$HADOOP_HOME/bin:$PA TH8 、配置hadoophadoop 的主要配置都在hadoop-0.20. 2 /conf 下。

Hadoop学习笔记

Hadoop学习笔记

Hadoop学习一、Hadoop入门1.简介一个分布式系统基础架构,由Apache基金会开发。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。

充分利用集群的威力高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。

HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。

而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。

起源Hadoop由Apache Software Foundation 公司于2005 年秋天作为Lucene的子项目Nutch的一部分正式引入。

它受到最先由Google Lab 开发的Map/Reduce 和Google File System(GFS) 的启发。

2006 年3 月份,Map/Reduce 和Nutch Distributed File System (NDFS) 分别被纳入称为Hadoop 的项目中。

Hadoop 是最受欢迎的在Internet 上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。

例如,如果您要grep 一个10TB 的巨型文件,会出现什么情况?在传统的系统上,这将需要很长的时间。

但是Hadoop 在设计时就考虑到这些问题,采用并行执行机制,因此能大大提高效率。

优势Hadoop是一个能够对大量数据进行分布式处理的软件框架。

但是Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。

Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。

Ubuntu14.04下安装Hadoop2.4.0 (单机模式)

Ubuntu14.04下安装Hadoop2.4.0 (单机模式)

Ubuntu14.04下安装Hadoop2.4.0 (单机模式)一、在Ubuntu下创建hadoop组和hadoop用户增加hadoop用户组,同时在该组里增加hadoop用户,后续在涉及到hadoop操作时,我们使用该用户。

1、创建hadoop用户组2、创建hadoop用户sudo adduser -ingroup hadoop hadoop回车后会提示输入新的UNIX密码,这是新建用户hadoop的密码,输入回车即可。

如果不输入密码,回车后会重新提示输入密码,即密码不能为空。

最后确认信息是否正确,如果没问题,输入Y,回车即可。

3、为hadoop用户添加权限输入:sudo gedit /etc/sudoers回车,打开sudoers文件给hadoop用户赋予和root用户同样的权限二、用新增加的hadoop用户登录Ubuntu系统三、安装sshsudo apt-get install openssh-server安装完成后,启动服务sudo /etc/init.d/ssh start查看服务是否正确启动:ps -e | grep ssh设置免密码登录,生成私钥和公钥ssh-keygen -t rsa -P ""此时会在/home/hadoop/.ssh下生成两个文件:id_rsa和id_rsa.pub,前者为私钥,后者为公钥。

下面我们将公钥追加到authorized_keys中,它用户保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys登录sshssh localhost退出exit四、安装Java环境sudo apt-get install openjdk-7-jdk查看安装结果,输入命令:java -version,结果如下表示安装成功。

五、安装hadoop2.4.02、安装解压sudo tar xzf hadoop-2.4.0.tar.gz假如我们要把hadoop安装到/usr/local下拷贝到/usr/local/下,文件夹为hadoopsudo mv hadoop-2.4.0 /usr/local/hadoop赋予用户对该文件夹的读写权限sudo chmod 774 /usr/local/hadoop3、配置1)配置~/.bashrc配置该文件前需要知道Java的安装路径,用来设置JAVA_HOME环境变量,可以使用下面命令行查看安装路径 update-alternatives - -config java执行结果如下:完整的路径为/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java我们只取前面的部分/usr/lib/jvm/java-7-openjdk-amd64配置.bashrc文件sudo gedit ~/.bashrc该命令会打开该文件的编辑窗口,在文件末尾追加下面内容,然后保存,关闭编辑窗口。

hadoop学习心得

hadoop学习心得

竭诚为您提供优质文档/双击可除hadoop学习心得篇一:hadoop初步学习文档hadoop初步学习文档1hadoop简介Apachehadoop是一款支持数据密集型分布式应用并以Apache2.0许可协议发布的开源软件框架。

它支持在商品硬件构建的大型集群上运行的应用程序。

hadoop是根据google 公司发表的mapReduce和google文件系统的论文自行实现而成。

1.1hadoop基本构成hadoop是一个能够对大量数据进行分布式处理的软件框架,hadoop实现了一个分布式文件系统(hadoopDistributedFilesystem),简称hDFs。

hadoop的集群是基于master/slave模式hadoop基本运行结构图如下:其中master和slave1、slave2、slave3、slave4分别为五台主机,namenode、Datanode 等为运行在主机上的进程。

进程的作用如下:(一)namenode是hDFs的守护程序,负责记录文件是如何分割成数据块的,以及这些数据块分别被存到那些数据节点上,主要功能是对内存及I/o进行集中管理(是个单点,发生故障将使集群崩溃)(二)Datanode这个后台程序负责把hDFs数据块读写到本地的文件系统,当客户端要读写某个数据时候,先由namenode告诉客户端去哪个Datanode进行具体的读/写操作,然后客户端直接与这个Datanode服务器上的后台程序进行通讯,并且对相关的数据块进行读/写操作。

(三)secondarynamenode:是一个用来监控hDFs状态的辅助后台程序,就像namenode一样,每个集群都有一个secondarynamenode,不接收或记录任何实时的数据变化,但是,他会与namenode进行通信,以便定期的保存hDFs元数据的快照,如果name发生问题,secondarynamenode可以及时的作为备用namenode。

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

Hadoop+Ubuntu 学习笔记——IT 进行时(zhengxianquan AT )环备一、境准Hadoop-0.20.1Ubuntu 9.10二、安装JDK6开终执打端,行以下命令:sudo apt-get install sun-java6-jdk按照提示做就是了。

配置JAVA 环变境量:sudo gedit /etc/environment在其中添加如下两行:CLASSPATH=.:/usr/lib/jvm/java-6-sun/libJAVA_HOME=/usr/lib/jvm/java-6-sun执行命令:sudo gedit /etc/jvm,在最前面加入:/usr/lib/jvm/java-6-sun三、配置SSH见方便起,新增hadoop 组户的及其同名用:zhengxq@zhengxq-desktop:~$ sudo addgroup hadoopzhengxq@zhengxq-desktop:~$ sudo adduser --ingroup hadoop hadoop 别则请接下来需要做些特的工作(否参考FAQ“xx is not in the sudoers file”): hadoop@zhengxq-desktop:~$ suroot@zhengxq-desktop:/home/hadoop# ls -l /etc/sudoers-r--r----- 1 root root 557 2009-11-10 22:01 /etc/sudoersroot@zhengxq-desktop:/home/hadoop# chmod u+w /etc/sudoersroot@zhengxq-desktop:/home/hadoop# ls -l /etc/sudoers-rw-r----- 1 root root 557 2009-11-10 22:01 /etc/sudoersroot@zhengxq-desktop:/home/hadoop# gedit /etc/sudoers在root ALL=(ALL) ALL后面添加:hadoop ALL=(ALL) ALLroot@zhengxq-desktop:/home/hadoop# chmod u-w /etc/sudoersroot@zhengxq-desktop:/home/hadoop# exit安装openssh-server:$ sudo apt-get install openssh-server建立SSH KEY:zhengxq@zhengxq-desktop:~$ su hadoophadoop@zhengxq-desktop:/home/zhengxq$ ssh-keygen -t rsa -P ""Generating public/private rsa key pair.Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):Created directory '/home/hadoop/.ssh'.Your identification has been saved in /home/hadoop/.ssh/id_rsa.Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.The key fingerprint is:f4:5f:6a:f4:e5:bf:1d:c8:08:28:1c:88:b4:31:4a:a0 hadoop@zhengxq-desktop ……启用SSH KEY:hadoop@zhengxq-desktop:~$ cat $HOME/.ssh/id_rsa.pub >>$HOME/.ssh/authorized_keyshadoop@zhengxq-desktop:~$ sudo /etc/init.d/ssh reload* Reloading OpenBSD Secure Shell server's configuration sshd [ OK ]验证SSH的配置:hadoop@zhengxq-desktop:~$ ssh localhostThe authenticity of host 'localhost (::1)' can't be established.RSA key fingerprint is 52:9b:e2:62:93:01:88:e6:46:a8:16:68:52:91:8a:ea.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'localhost' (RSA) to the list of known hosts.Linux zhengxq-desktop 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 1614:04:26 UTC 2009 i686……四、安装配置hadoop下及安装4.1载下一个0.20.1版本;到/dyn/closer.cgi/hadoop/core/载下,并改所有者hadoop:tar压缩或者直接解到/usr/local/hadoop/变为zhengxq@zhengxq-desktop:/usr/local$ sudo chown -R hadoop:hadoop hadoop4.2配置4.2.1配置$HADOOP_HOME/conf/hadoop-env.shzhengxq@zhengxq-desktop:/usr/local/hadoop$ cd had*zhengxq@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ gedit conf/hadoop-env.shzhengxq@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ sudo geditconf/hadoop-env.sh修改点:为export JAVA_HOME=/usr/lib/jvm/java-6-sun4.2.2配置$HADOOP_HOME/conf/core-site.xmlzhengxq@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ sudo geditconf/core-site.xml空的,内容加上:<property><name></name><value>hdfs://localhost:9000</value></property><property><name>dfs.replication</name><value>1</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp</value></property></property>注:如没有配置hadoop.tmp.dir时统认临时录为参数,此系默的目:/tmp/hadoop-才行,否会出。

而个目在次重启后都会被干掉,必重新行format则错hadoop这录每须执4.2.3配置$HADOOP_HOME/conf/mapred-site.xml同core-site.xml。

加上:<property><name>mapred.job.tracker</name><value>localhost:9001</value></property>4.2.4格式化namenodezhengxq@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ ./bin/hadoop namenode -format启及4.3动验证启命令:动hadoop@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ ./bin/start-all.sh验证。

方法一:hadoop@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ jps6605 TaskTracker6707 Jps6447 JobTracker6385 SecondaryNameNode6109 NameNodehadoop@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$方法二:hadoop@zhengxq-desktop:/usr/local/hadoop/hadoop-0.20.1$ bin/hadoop dfsadmin -reportConfigured Capacity: 4995207168 (4.65 GB)Present Capacity: 1255460864 (1.17 GB)DFS Remaining: 1252446208 (1.17 GB)DFS Used: 3014656 (2.88 MB)DFS Used%: 0.24%Under replicated blocks: 6Blocks with corrupt replicas: 0Missing blocks: 0-------------------------------------------------Datanodes available: 1 (1 total, 0 dead)Name: 127.0.0.1:50010Decommission Status : NormalConfigured Capacity: 4995207168 (4.65 GB)DFS Used: 3014656 (2.88 MB)Non DFS Used: 3739746304 (3.48 GB)DFS Remaining: 1252446208(1.17 GB)DFS Used%: 0.06%DFS Remaining%: 25.07%Last contact: Sat Nov 14 13:45:24 CST 2009表示正常了,也可以看看日志,在$HADOOP_HOME/logs下。

相关文档
最新文档