Hadoop安装部署指南

//2008-12-15 17:13

最近一直在安装部署这个Hadoop集群,现在已经成功了,分享下经历.我基本上是从来没用过Linux,只会一些简单的命令,这回成功让我的信心大增.

首先我推荐有能力的朋友先看以下两篇文章,基本上就会成功部署了.

单节点Hadoop配置:  http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_(Single-Node_Cluster)
多节点Hadoop配置:  http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_(Multi-Node_Cluster)


然后我会简要介绍下我部署的经历,希望能帮到有需要的人:

{零}:首先得用Linux,下载好JDK包和Hadoop的程序包. 我的JDK是1.6_update11的,Hadoop程序包是0.19.0的.

{一}:安装JDK在 /usr/java/jdk1.6.0.11,并且在/etc/profile中的最后一行加入:
export JAVA_HOME=/usr/java/jdk1.6.0.11
export CLASSPATH =.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
]
这样在每次系统启动的时候就可以自动设置这些系统值了. 
然后测试一下命令:[java -version]和[javac -version]应该都能看到Java的版本是1.6.0_11的.

{二}:然后配置主机IP地址和名称,在文件 /etc/hosts里面配置,比如
192.168.0.1 master master
192.168.0.2 slave slaveN
这里配置完以后似乎要重启机器才能使配置名称有效,并且一定要在SSH产生KeyGen之前重起,因为产生keygen的时候跟主机名有关.

{三}:然后需要配置ssh,这里是为了让master通过ssh能顺利访问master和slave的,我以前总结如下:

[//2008-12-12 14:37

SSH使用指南 

配置网路机器IP和机器名的地方 /etc/hosts

SSH的具体原理去网上找吧,使用过程主要是如下步骤,假设用户名为aliang,并用此用户登录(切记,切记):

(1) ssh-keygen -t rsa -P ""  [ 产生密匙,密码为空]
自动产生文件id_rsa(私用密匙)和id_rsa.pub(公用密匙) 在文件夹 /home/aliang/.ssh/ 下

(2)将公用密匙id_rsa.pub的内容添加到authorized_keys文件中,命令如下: [cat id_rsa.pub >> authorized_keys]
为什么要叫authorized_keys这个名字呢? 因为在sshd的配置项(AuthorizedKeyFile)下设置的文件地址为在用户目录下的 .ssh/authorized_keys, 如果你想改名,也要更改相应的配置文件就行了.

(3)确定/home/aliang/.ssh/文件夹属于aliang,如不属于用 [chown -R aliang /home/aliang/.ssh/] 更改 ; 一定要确定.ssh文件夹权限为700, authorized_keys权限为600. 命令如下: [chmod 700 /home/aliang/.ssh] ; [chmod 600 /home/aliang/.ssh/authorized_keys]
这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的.
另外以.开头的文件Linux默认是不显示的,要用[ls -la]才能看见.

(4)使用root用户,更改sshd的配置文件: [vi /etc/ssh/sshd_config] : 将PasswordAuthentication 改为 no; AuthorizedKeyFile .ssh/authorized_keys 项前的#去掉

(5)继续使用root用户,重起sshd : [service sshd restart]

(6)用aliang用户,ssh连接: ssh hostName, 如果不出意外,第一次要输入yes,在.ssh目录底下会自动产生个known_hosts文件.

单机SSH就基本配置完毕了.

--- ---

下面是集群的其他机器SSH配置

(7)其他的机器上也要创建aliang这个用户,产生文件夹 /home/aliang

(8)将第(2)步产生的authorized_keys拷贝到其他机器的 /home/aliang/.ssh/ 文件夹中,如果.ssh/文件夹不存在用mkdir创建. 拷贝的此文件的一种方法为: 在第一台机器上/home/aliang/.ssh/目录下使用:[scp authorized_keys othermachine:/home/aliang/.ssh/]  这时提示需要输入其他机器aliang的用户密码

(9)将其他机器按照之前(3) (4) (5) 就可以了,在(6)步中在第一台机器上用 ssh othermachine 命令连接测试是否成功

(10) 从此,用第一台机器就可以自由的用ssh连接其他机器了,并且不需要密码,因为授权文件已经拷贝到其根目录下了. 第一台机器在Hadoop中即为Master了.

SSH使用配置指南完毕.

//12-12 17:16]

{四}:将Hadoop的包解压到/usr/hadoop文件夹中,并确认此文件夹拥有人为aliang,命令如下[chown -R hadoop /usr/hadoop]

{五}:配置/usr/hadoop/conf/hadoop-env.sh中的Java路径,应该把其中注释JAVA_HOME的一行改为,这里必须要改,且等号右面不能用${JAVA_HOME}替代(脚本认不出来),最终结果为
export JAVA_HOME=/usr/java/jdk1.6.0.11

{六}: 配置conf/hadoop-site.xml文件,其实一开始部署时,仅有4个关键配置项需要配置

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>

下面配置临时文件目录
<property>
  <name>hadoop.tmp.dir</name>
  <value>/your/path/to/hadoop/tmp/dir/hadoop-${user.name}</value>
</property>
 
下面配置文件系统的默认管理者NameNode地址
<property>
  <name>fs.default.name</name>
  <value>hdfs://master:54310</value>
</property>
 
下面配置任务调度系统调度者JobTracker地址
<property>
  <name>mapred.job.tracker</name>
  <value>master:54311</value>
</property>
 
下面配置文件系统中文件的备份拷贝数
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>
 
</configuration>



{七}:在192.168.0.1(master)上配置你的master和slave机器列表
配置master在: /usr/hadoop/conf/masters 文件里面输入单独一行:master (就是你/etc/host里面的主机名称)
配置slave在: /usr/hadoop/conf/slaves 文件里面输入你的slave (开始单机模式下测试可以写master,但在其集群中,就要写入slave,每个slave主机的名字都要另起一行,并且配置的这些slave都要能用ssh slave 不输入密码连接成功)

{八}:全部配置文件搞定后,格式化文件系统 /usr/hadoop/bin/hadoop namenode -format
此处要注意,每次修改过hadoop配置文件后(无论master还是slave),最好重新格式化一下文件系统,并且重起机器,否则有时会出现DateNode启动不起来的情况. 如果还有问题,建议去看HDFS Administrator Guide.

{九}:开启你的Hadoop,使用命令: /usr/hadoop/bin/start-all.sh

{十}: 运行你的测试:
先写几个文本文件,然后拷贝到你的dfs文件系统中: [/usr/hadoop/bin/hadoop dfs -copyFromLocal /tmp/words(这是你的文本文件所在的文件夹) wordsTest(这是DFS文件的文件夹名,分布在集群中)]
运行例子命令: [/usr/hadoop/bin/hadoop jar hadoop-0.19.0-examples.jar wordcount wordsTest wordsTest-output]

{十一}:关闭Hadoop,使用命令: /usr/hadoop/bin/stop-all.sh

{十二}:把master中配置好的/usr/hadoop 文件夹考到别的机器上,使用命令[scp -r /usr/hadoop/ slave:/usr/]

以上就是这些,写的有些乱,其实还是建议大家去看开头那两个帖子,一步一步来,很简单的,如果中间出了问题,首先要检查各个配置文件有没有错误,用户名路径是否一致,文件所属和权限对不对,再次看DFS文件系统是否格式化,测试程序输出文件是否重名,最后可以看看hadoop/logs目录里面的log,也许会有意想不到的帮助.


更多MapReduce和Hadoop的信息:

Hadoop 官方主页: http://hadoop.apache.org/
Hadoop Wiki: http://wiki.apache.org/hadoop/
Hadoop 中文信息网: http://www.hadoop.org.cn/
IBM上也有不少讲解原理的文章,不过还是建议去看看Google的论文,搜索MapReduce就能找到了. 

其实Hadoop的Core基础就是一个分布式文件系统HDFS和一个MapReduce分布式计算框架.一定要搞清楚这两个的原理和基本概念,以后的应用和开发就会很清楚了.这方面网上有很多资料,我就不再啰嗦了.

//12-15 18:17
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值