准备工作:
Window版hadoop下载地址:
http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1-bin.tar.gz
下载Eclipse hadoop的插件地址:hadoop-eclipse-plugin-1.2.1.jar
Linux Hadoop下载地址:
http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
在linux服务器上创建用户名为hadoop的用户: [root@localhost ~]# useradd hadoop 设置密码:
[root@localhost ~]# passwd hadoop
添加hadoop用户使用vim、vi等命令的权限: [root@localhost ~]# vim /etc/sudoers root ALL=(ALL) ALL hadoop ALL=(ALL) ALL
此处保存是可能需要使用:wq!强制保存。
以下文档如无特殊说明均使用hadoop账户进行操作
1.Hadoop单机部署
1.下载hadoop-1.2.1.tar.gz文件。
2.运行命令 tar zxvf hadoop-1.2.1.tar.gz将hadoop解压到自己喜欢的目录下(我的解压在/usr/local/目录下)
3.编辑hadoop-1.2.1目录下的conf/hadoop-env.sh文件,将其中的JAVA_HOME配置为自己的jdk目录(如我的为:JAVA_HOME=/usr/local/jdk1.7.0_60) 4.到此出Hadoop单机部署基本完成。 5.单机模式的操作方法
默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
下面的实例将已解压的 conf 目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output目录。
[hadoop@localhost hadoop-1.2.1]$ mkdir input
[hadoop@localhost hadoop-1.2.1]$ cp conf/*.xml input
[hadoop@localhost hadoop-1.2.1]$ bin/hadoop jar hadoop-examples-1.2.1.jar grep input output 'dfs[a-z.]+' $ cat output/* 注:语法不理解没关系看下面进一步说明 显示结果 1 dfsadmin
2.Hadoop伪分布式模式部署
1.下载hadoop-1.2.1.tar.gz文件。
2.运行命令 tar zxvf hadoop-1.2.1.tar.gz将hadoop解压到自己喜欢的目录下(我的解压在/usr/local/目录下)
3.编辑hadoop-1.2.1目录下的conf/hadoop-env.sh文件,将其中的JAVA_HOME配置为自己的jdk目录(如我的为:JAVA_HOME=/usr/local/jdk1.7.0_60) 4.编辑配置文件
注:以前的版本是hadoop-site.xml,可hadoop在0.20版本,配置文件由以前的
hadoop-site.xml文件变成三个配置文件core-site.xml,hdfs- site.xml,mapred-site.xml.内在的原因是因为hadoop代码量越来越宠大,拆解成三个大的分支进行独立开发,配置文件也独立了
[hadoop@localhost hadoop-1.2.1]$ vim conf/core-site.xml:
[hadoop@localhost hadoop-1.2.1]$ vim conf/hdfs-site.xml:
[hadoop@localhost hadoop-1.2.1]$ vim conf/mapred-site.xml:
5.免密码ssh设置
现在确认能否不输入口令就用ssh登录localhost: [hadoop@localhost hadoop-1.2.1]$ ssh localhost
如果不输入口令就无法用ssh登陆localhost,执行下面的命令:
[hadoop@localhost hadoop-1.2.1]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
[hadoop@localhost hadoop-1.2.1]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
6.执行
首先使用 hadoop 命令对 Hadoop File System (HDFS) 进行格式化。
首先,请求 namenode 对 DFS 文件系统进行格式化。在安装过程中完成了这个步骤,但是了解是否需要生成干净的文件系统是有用的。
[hadoop@localhost hadoop-1.2.1]$ bin/hadoop namenode -format 接下来,启动 Hadoop 守护进程。 启动Hadoop守护进程:
[hadoop@localhost hadoop-1.2.1]$ bin/start-all.sh
注:1)Hadoop守护进程的日志写入到 ${HADOOP_LOG_DIR} 目录 (默认是 ${HADOOP_HOME}/logs)
2)启动hadoop,但ssh 端口不是默认的22怎么样?好在它可以配置。在conf/hadoop-env.sh里改下。如:
export HADOOP_SSH_OPTS=\
浏览NameNode和JobTracker的网络接口,它们的地址默认为: NameNode - http://localhost:50070/ JobTracker - http://localhost:50030/ 将输入文件拷贝到分布式文件系统:
[hadoop@localhost hadoop-1.2.1]$ bin/hadoop fs -put conf input
运行发行版提供的示例程序: [hadoop@localhost
hadoop-1.2.1]$ bin/hadoop jar hadoop-examples-1.2.1.jar grep input output 'dfs[a-z.]+' 查看输出文件:
将输出文件从分布式文件系统拷贝到本地文件系统查看:
[hadoop@localhost hadoop-1.2.1]$ bin/hadoop fs -get output output $ cat output/* 或者
在分布式文件系统上查看输出文件:
[hadoop@localhost hadoop-1.2.1]$ bin/hadoop fs -cat output/* 完成全部操作后,停止守护进程:
[hadoop@localhost hadoop-1.2.1]$ bin/stop-all.sh Hadoop 在这个伪分布式配置中启动 5 个守护进程:namenode、secondarynamenode、datanode、jobtracker 和 tasktracker。在启动每个守护进程时,会看到一些相关信息(指出存储日志的位置)。每个守护进程都在后台运行。图 1 说明完成启动之后伪分布式配置的架构。 图 1. 伪分布式 Hadoop 配置
3.Hadoop集群搭建
用了三台服务器作了hadoop集群的部署测试,服务器有 192.168.153.129(下面简称129) 192.168.153.130(下面简称130) 192.168.153.131(下面简称131) 架构规化如下:
1)129作为NameNode,SecondaryNameNode,JobTracker; 2)130和131作为 DataNode,TaskTracker
1.创建hadoop用户
在三台linux服务器上分别创建用户名为hadoop的用户: [root@localhost ~]# useradd hadoop 设置密码:
[root@localhost ~]# passwd hadoop
添加hadoop用户使用vim、vi等命令的权限: [root@localhost ~]# vim /etc/sudoers root ALL=(ALL) ALL hadoop ALL=(ALL) ALL
此处保存是可能需要使用:wq!强制保存。
2.配置无密码登录
以hadoop用户名登陆名称节点(129)执行
[hadoop@localhost ~]$ ssh-keygen -t rsa
然后一路回车,完毕后生成文件.ssh/id_rsa.pub 按以下步骤执行命令:
[hadoop@localhost ~]$ cd .ssh/
[hadoop@localhost .ssh]$ cp id_rsa.pub authorized_keys [hadoop@localhost .ssh]$ ssh localhost
Last login: Mon Nov 24 17:09:56 2014 from localhost [hadoop@localhost ~]$
如果不需要密码则直接登陆进去的话,就达到要求;否则需检查authorized_keys的权限,看是否为644(-rw-r--r--)。 然后执行命令
[hadoop@localhost ~]$ ssh-copy-id -i hadoop@192.168.153.130 [hadoop@localhost ~]$ ssh 192.168.153.130
如果不需要密码能登陆成功192.168.153.130,则ssh的配置结束。 同理执行
[hadoop@localhost ~]$ ssh-copy-id -i hadoop@192.168.153.131 [hadoop@localhost ~]$ ssh 192.168.153.131
如果不需要密码能登陆成功192.168.153.131,则ssh的配置结束。
(免密码登录也可以按以下方式操作:以hadoop用户登陆数据节点服务器(130,131),创建.ssh目录,并给
与600权限(chmod 600 .ssh); 再把名称129服务器上的authorized_keys复制到目录数据节点(130,131)./ssh,注意权限和目录结构跟名称节点保持一致,然后再从名称129节点用ssh登陆数据节点(130,131),如果不需要密码能登陆成功,则ssh的配置结束。)
3.hadoop软件安装及集群部署
1)下载hadoop-1.2.1.tar.gz文件。
2)运行命令 tar zxvf hadoop-1.2.1.tar.gz将hadoop解压到自己喜欢的目录下(我的解压在/usr/local/目录下)
3)编辑hadoop-1.2.1目录下的conf/hadoop-env.sh文件,将其中的JAVA_HOME配置为自己的jdk目录(如我的为:JAVA_HOME=/usr/local/jdk1.7.0_60) 4)修改masters和slaves配置
修改文件/usr/local/hadoop-1.2.1/conf/slaves及/usr/local/hadoop-1.2.1/conf/masters,把数据节点的主机名加到slaves、名称节点主机名加到masters。可以加多个,每行一个。注意主机名需要在每个服务器的/etc/hosts映射好。 在129上执行
[hadoop@localhost hadoop-1.2.1]$ vi conf/slaves 192.168.153.130 192.168.153.131 在130、131上执行
[hadoop@localhost hadoop-1.2.1]$ vi conf/masters 192.168.153.129