您的位置:首页 > 运维架构

hadoop demo搭建集群

2013-01-12 14:13 459 查看
此次实验共使用3台实体机子:

机器名角色IP
masterNamenode10.117.253.201
slave1Datanode10.117.253.101
slave2Datanode10.117.253.102
TIPS1: 为了操作方便,此次实验所有实体机的用户名都为hadoop

TIPS2: 在hadoop术语中,主机被称作 namenode, 节点为datanode

操作系统: Ubuntu 12.10

JAVA版本:jdk1.6.0_24

hadoop版本:  1.1.1

安装步骤

大致说明下,搭建hadoop主要为3个步骤:网络配置/SSH无密钥互信/配置hadoop。(默认JAVA已经安装)

1. 网络配置

首先关闭防火墙: $ sudo ufw disable

在etc/hosts文件下添加机器名: $ sudo vim /etc/hosts

10.117.253.201 master
10.117.253.101 slave1
10.117.253.102 slave2


TIPS: 一共多少节点就得写多少进去。

2. SSH无密钥互信

所有实体机安装ssh server: $ sudo apt-get install openssh-server

TIPS: 安装后使用 命令  $ ssh localhost 可以测试是否成功安装登录。

namenode
上实现无密码登录

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa   #此命令会自动在根目录的隐藏文件夹生成密钥,分别为 id_rsd 和 id_rsa.pub#

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys                #讲密钥放进权限KEY内#

TIPS:完成后一样可以用 $ ssh localhost 来测试下是否实现无密码登录本机。

namenode无密码登录其他datanode

将刚刚生成在应藏文件夹ssh里面的 id_rsd.pub追加到datanode里面的权限KEY内, 可以用U盘拷或者直接命令

$ scp ~/.ssh/id_rsd.pub slave1@10.117.253.101:/home/hadoop/.ssh

然后登录slave1或者实际操作slave1,同样执行 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

完成后即可用namenode无密码访问datanode。

TIPS: 关于hadoop是否需要设置所有datanode 无密码登录 namenode, 小僧上网上网搜索了一下别的安装教程,有些说要,有些说不要,为了安全起见,还是将所有datanode成功登录了namenode, 实现方法与上面一致,只不过是将两台机子对掉而已。BTW, 已经成功后我们需要注意将namenode所生成的的id_rsa.pub保留(因为需要继续增加节点),别的节点所生成或者传输来主机的id_rsa.pub删除,以免造成日后混乱。

3. 配置hadoop

总体来说,所有实体机子(namenode和datanode配置相同)里面的hadoop文件包里有4个文件需要自行修改 ,都是位于conf里面:  hadoop-env.sh, core-site.xml, hdfs-site.xml, mapred-site.xml。namenode会比datanode多一个文件需要配置, 会在下列用红字标出

安装hadoop

首先先从官网下载安装包。 http://hadoop.apache.org/
找到 hadoop-1.1.1.tar.gz   解压缩到 /opt/目录下  (可以自行根据个人喜好修改路径), 小僧为了方便配置建立了软链接( $ ln -s hadoop-1.1.1 hadoop)

然后将安装路径加入到 /etc/profile 内

export HADOOP_HOME=/opt/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOME_WARN_SUPPRESS=1     #1.0版本后响警报,其实这个加不加也没什么所谓#


配置 hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-i386


配置slave1 文件 (只在namenode上配置)

slave1
slave2

#只要将机器名或者IP其中一样写入即可#

注意: 小僧在观摩别的安装教程中,发现有很多教程作者在这里多配置了一个conf/masters文件。事实上,能否让机子变成Namenode并非在这里控制;从字面意思来看---master文件的名称确实有点误导人, 其实它的功能是设立另外一个secondary namenode作为辅助。就整个hadoop项目来看,NameNode节点的单点故障问题导致的后果会十分严重和致命,因此secondaryNameNode节点启动之后会不断的对NameNode节点保存的元数据进行备份。下图为SNN的工作时序图:



图片转自linux公社的xhh198781

配置core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://10.117.253.201:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
TIPS:  这个tmp文件夹是分布式存储的一个临时文件存放的地方,会随着集群启动自动生成,但它也是节点报错的高频率地方,请注意修改好这个文件夹的权限问题。(小僧试过好几次提示权限不足而启动服务失败。)

配置hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

<property>

4000
<name>dfs.name.dir</name>
<value>/opt/hadoop/hdfs/name</value>
</property>

<property>
<name>dfs.data.dir</name>
<value>/opt/hadoop/hdfs/data</value>
</property>
</configuration>
TIPS:  第一段为启动服务的节点少于红色数字时就报错,因此修改为1.

TIPS:  后两段为分布式数据存储的路径问题,同样是报错的高频率地方,而且在网上许多搭建教程中并没有后两段的配置,经过小僧实验,服务启动是肯定会失败的,文件夹可能需要手动创建,请注意修改好这个文件夹的权限问题还有查看日志。

配置 mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>10.117.253.201:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
TIPS:与 core-site.xml 一样请注意tmp文件夹问题

4. 测试

以上搭建可以算是完成了,启动服务之前,先格式化hdfs系统 $ hadoop namenode -format

注意提示,如果成功格式化的话就可以用命令启动服务了 $ start-all.sh  /  关闭是用 $ stop-all.sh

服务启动后可以使用$ jps 命令或者 $ hadoop dfsadmin -report 来查看进程是否启动。

HDFS web方式 : http://localhost:50070
MR web方式: http://localhost:50030
关于 HDFS 分布式储存常用操作:

hadoopdfs -ls 列出HDFS下的文件
hadoop dfs -ls in 列出HDFS下某个文档中的文件
hadoop fs -mkdir 创建文件夹
hadoop dfs -put test1.txt test 上传文件到指定目录并且重新命名,只有所有的DataNode都接收完数据才算成功
hadoop dfs -get in getin 从HDFS获取文件并且重新命名为getin,同put一样可操作文件也可操作目录
hadoop dfs -rmr out 删除指定文件从HDFS上
hadoop dfs -cat in/* 查看HDFS上in目录的内容
hadoop dfsadmin -report 查看HDFS的基本统计信息,结果如下
hadoop dfsadmin -safemode leave 退出安全模式
hadoop dfsadmin -safemode enter 进入安全模式

转载注明出处:逆风飞扬:http://blog.csdn.net/wangfaqiang/article/details/7244552/


另外,运行自带的wordcount.java程序可以体现简单的MR工作原理,这里不进行说明,需求的请自行GOOGLE

总结一句,凡是搭建过程中遇到错误的, Google and Log is your friend。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hadoop Ubuntu