Hadoop安装手册1-基础扫盲及准备工作

   如今的Hadoop不仅声名远扬,影响力在apache的开源项目中也占据着头把交椅,国内外已有非常的成功应用。就目前来说,我对Hadoop整个体系连个大概的了解都说不上,个人倒是老早就想深入学习这套体系,本地磁盘上的安装包更是早就下载好了,不过文件保存日期久远的我自己都不好意思看。

  值此新年伊始,欣喜地看到tigerfish老师第四期hadoop课程开班,我也赶紧报名参与,希望能在tigerfish老师的指导下,专心听课认真做题,争取在课程结业的时候,使自己对hadoop的了解能达到入门的水平。

  Hadoop如今已经成长为一套体系,包含的组件众多,要学习的知识很多,目前互联网上的各类参考资料更是浩瀚,遇到这种情况很多朋友可能都在苦恼不知道该从何开始。就我来说倒没有这方面的烦恼,从来这么多年,接触的东西也很多,但不管要学习什么,我的学习路径很像那些爱玩游戏的孩子,接触到一个感兴趣的新东西,第一件事并不翻开它的说明书,而是先拿在手里把玩一番,遇着不懂的就去找专门应对方案。等有大致了解之后,再会系统的阅读官方提供的文档。

  就Hadoop来说,在使用之前我们得首先有一套环境,因此这篇文章就算是我初次接触Hadoop的一个记录吧,先跟三思一起来了解到底什么是hadoop,而后我们再亲自动手,部署一套Hadoop集群出来。

0、基础部分扫盲

0.0 关于Hadoop

  听说过Doug Cutting没,听说过Lucene没,听说过Nutch没,什么,都没听过?哎,我真不知道该如何向你解释。GOOGLE听说过没,这个总归有印象了吧。为什么要提GOOGLE呢,按照tigerfish老师所说,Hadoop就是山寨版的GOOGLE搜索。

  很多朋友都好奇GOOGLE/BAIDU这类搜索引擎,是怎么实现这么高效的查询速度,用的什么数据库等等,GOOGLE当然不会把自己的核心技术全面公开,即使对它最了解的非GOOGLE人士,也只能用连蒙带猜的方式推测,因此能回答这个问题的人怕是不多的。不过我想说的是,HADOOP实现了一套类似GOOGLE的解决方案,如果你了解了它,那么对于前面的问题想必也就有答案了。

  前面提示的Nutch/Lucene又是怎么回事儿呢,这部分内容暂不多扯,待后面我八卦些小道消息再论。如有素材欢迎提供。

0.1 关于Hadoop家族

  Hadoop的核心模块有两个:HDFS(Hadoop Distributed Filesystem)和MapReduce,前者提供存储,后者负责计算,可谓珠联璧合,除此之后还有:

  •  
  • Hbase:类似Google BigTable的分布式列式数据库;  
  • Hive:基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成数据库表,并且提供SQL查询功能,能够将SQL语句转换成MapReduce任务运行;  
  • Pig:与Hive类似也是基于hadoop的扩展项目,据说本意是为了简化hadoop编程,提供一个高度抽象的数据处理方式,具体能够多么简化我也不知道,有机会接触了再说;  
  • ZooKeeper:分布式系统中的资源管理系统,可用于维护集群中的资源调度;

  其它也许还有,以后必将更多,Hadoop做为Apache基金会的顶级项目,自身也是高速发展。

0.2 hadoop的体系结构

  Hadoop集群中从大的粒度来看可以分为两种角色:Master和Slave,其中master又可以分为主master和辅助master,一个节点属于什么角色,是由其提供的服务决定的:

  •  
  • 主Master:主要提供下列服务:    
    •      
    • NameNode:管理HDFS命名空间;      
    • SecondaryNameNode:辅助NameNode,可视为NameNode备份,保存检查点信息,用于快速恢复NameNode;      
    • JobTracker:任务分配器;    
       
  • 辅助Master:  
  • SecondaryNameNode:  
  • Slave:  
  • DataNode:HDFS数据存储节点;  
  • TaskTracker:任务处理器;

1、准备工作

  正常情况下Hadoop集群是由多个节点组成,每个节点做为其中的一个角色承担不同的任务,比如说某个节点运行namenode,某些节点运行datanode等等,不过,用户也可以将所有的应用都放在一个节点上,这种情况尽管也可以运行,其实就称不上分布式了。可是,这种模式还不算极端,Hadoop还支持一种本地模式。

  因此归纳一下,Hadoop集群可以分三种部署方式:

  •  
  • Local Mode:这种模式不需要守护进程,主要用于开发阶段,本地调试MapReduce程序比较方便,可以采用这种模式,环境部署和维护各方面都简单;  
  • Pseudo-distributed Mode:看名字就知道了,伪分布式嘛,这种就是前面说的,所有任务都运行在同一个节点上,但是部署的时候还是按照分布式的方式部署,这种模式比较适用个人测试,它对环境的要求会低一些;  
  • Fully-Distributed Mode:标准模式,本文中的hadoop环境就是基于这种模式部署(一主两从的最小规模);  
1.1 初始化第一个节点

  Hadoop运行需要JAVA环境,因此首先需要检查系统中是否安装的Java JDK:

[root@hdnode3 ~]# /usr/local/jdk1.7.0_09/bin/java -version

java version "1.7.0_09"

Java(TM) SE Runtime Environment (build 1.7.0_09-b05)

Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

  如果没有找到java的话,需要先安装jdk。安装包可以到SUN官网进行下载,或者直接通过yum进行安装,我这里是。

编译本地hosts文件:

# more /etc/hosts

127.0.0.1   localhost localhost.localdomain

::1         localhost localhost.localdomain  

192.168.30.203 hdnode1

192.168.30.204 hdnode2

192.168.30.205 hdnode3

创建用户:

# useradd grid

# passwd grid

Changing password for user grid.

New password:  

....................

解压缩hadoop安装包到指定目录下:

  • # tar xvfz /data/software/hadoop-0.20.2.tar.gz -C /usr/local/

不知道哪里下载安装包?http://www.apache.org/dyn/closer.cgi/hadoop/common/ 这里瞅一瞅。

修改文件夹的用户属主:

  • # chown grid:grid /usr/local/hadoop-0.20.2/ -R

生成节点间密钥,切换到grid用户下操作:

[root@hdnode1 ~]# su - grid

[grid@hdnode1 ~]$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/grid/.ssh/id_rsa):  

Created directory ¨/home/grid/.ssh¨.

Enter passphrase (empty for no passphrase):  

Enter same passphrase again:  

Your identification has been saved in /home/grid/.ssh/id_rsa.

Your public key has been saved in /home/grid/.ssh/id_rsa.pub.

The key fingerprint is:

b6:17:4b:7a:e1:7d:04:e6:01:49:bc:61:72:fb:b6:f3 grid@hdnode1

The key¨s randomart image is:

+--[ RSA 2048]----+

|         oo.     |

|        . *.     |

|         + ++    |

|          oo o   |

|        S +.. .  |

|       . = =o.   |

|        o =....  |

|         o  o.   |

|             oE  |

+-----------------+

而后将公钥信息保存到authorized_keys文件中:

  • [grid@hdnode1 ~]$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

注意修改authorized_keys文件权限为600,否则节点间无密码访问仍有可能失败。

配置grid用户环境变量:

  • [grid@hdnode1 ~]$ vi ~/.bash_profile  

增加下列内容:

export JAVA_HOME=/usr/local/jdk1.7.0_09

export HADOOP_HOME=/usr/local/hadoop-0.20.2

PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH:$HOME/bin

1.2 初始化第二和第三节点

在hdnode2和hdnode3节点上分别重复上面的步骤。

1.3 配置节点间无密码访问

现在咱们先将hdnode2和hdnode3两个节点的公钥信息全部输出到hdnode1的authorized_keys文件中:

[grid@hdnode1 ~]$ ssh hdnode2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  

The authenticity of host ¨hdnode2 (192.168.30.204)¨ can¨t be established.

RSA key fingerprint is 2d:e3:a1:b8:7e:5e:06:ae:04:55:73:73:13:24:94:c8.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ¨hdnode2,192.168.30.204¨ (RSA) to the list of known hosts.

grid@hdnode2¨s password:  

[grid@hdnode1 ~]$ ssh hdnode3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  

The authenticity of host ¨hdnode3 (192.168.30.205)¨ can¨t be established.

RSA key fingerprint is 2d:e3:a1:b8:7e:5e:06:ae:04:55:73:73:13:24:94:c8.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ¨hdnode3,192.168.30.205¨ (RSA) to the list of known hosts.

grid@hdnode3¨s password:  

修改认证密钥文件的权限为只有属主用户可读写:

  • [grid@hdnode1 ~]$ chmod 600 .ssh/authorized_keys  

然后将authorized_keys文件复制到其它节点,直接执行scp命令就可以:

[grid@hdnode1 ~]$ scp ~/.ssh/authorized_keys hdnode2:/home/grid/.ssh/authorized_keys  

grid@hdnode2¨s password:  

authorized_keys                                                                                                                       100% 1182     1.2KB/s   00:00    

[grid@hdnode1 ~]$ scp ~/.ssh/authorized_keys hdnode3:/home/grid/.ssh/authorized_keys  

grid@hdnode3¨s password:  

authorized_keys                                                                                                                       100% 1182     1.2KB/s   00:00    

接下来,如果有兴趣的话可以在各节点试一下ssh连接其它节点,应该不需要输入密码了:

[grid@hdnode1 ~]$ ssh hdnode1 date

Tue Jan 29 16:09:49 CST 2013

[grid@hdnode1 ~]$ ssh hdnode2 date

Tue Jan 29 16:09:51 CST 2013

[grid@hdnode1 ~]$ ssh hdnode3 date

Tue Jan 29 16:09:53 CST 2013

注意喽,第一次访问时会提示,将要访问的节点加入到已知主机列表,这是正常的,输入yes同意,后面再访问就不会再提示了。

至此,咱们这个无密码访问就算配置好了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-756807/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7607759/viewspace-756807/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值