共计 11154 个字符,预计需要花费 28 分钟才能阅读完成。
许久之前就计划学习 Hadoop 了,直到最近才提上日程。花费了一些时间才把 CentOS 下的 Hadoop 搭起来,前后经历的“挫折”绝对可以写成数千字的血泪史了。既有被网上教程坑了的苦逼遭遇,也有教研室大超师兄和实习公司的泡哥的爱心支援。今天终于可以坐下来说说如何在 CentOS 下安装 Hadoop 并与 Eclipse 连接这个问题。
先说一下要准备哪些软件和信息:
- VMware-workstation;
- CentOS-6.0-i386-bin-DVD;
- eclipse-jee-luna-SR1-win32;
- hadoop-0.20.2;
- jdk-6u27-linux-i586;
(由于 hadoop 对版本的要求较高,大家还是不要轻易更换版本,这里列出来的各种软件都是稳定发布版,网上很容易可以 download 到的)。
整个教程分为这样 5 个部分来说:1)在 Windows 下安装虚拟机 Vmware,并新建一个虚拟机装好 centos 系统;2)centos 下设置 ssh 服务无密码登录;3)centos 下安装 jdk,并配置环境变量;4)centos 下安装 hadoop,并配置文件;5)windows 下安装 jdk 和 eclipse,并将 eclipse 与 centos 下的 hadoop 连接。可以说这 5 个部分每一个都很重要,尤其是第 4)步。下面我们就详细说一下每一步该怎么做。
Step 0: 请大家先在 windows 下新建一个普通用户,用户名为 hadoop,我们所有的软件全在这个下面安装,用户名最好要是 hadoop,因为这个要和后面很多 username 相同,设为 hadoop 比较好记。
————————————– 分割线 ————————————–
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
————————————– 分割线 ————————————–
1)在 Windows 下安装虚拟机 Vmware,并新建一个虚拟机装好 centos 系统;
首先,下载 VMware-workstation 并安装,这步骤和一般 windows 下安装软件的过程是一样的,入门小白也会熟练操作,这里就节省点儿空间给后面重要的步骤了~
然后,在 Vmware 的主页上新建一个虚拟机,如下图:
一路下一步,直到让你选择系统镜像路径,我们选择 centos 系统映像,如上图,点击下一步。然后,需要你输入 linux 的用户名,这个比较重要,最好填写 hadoop,因为这个名字在后面要用到好多次!
后面还是一路的“下一步”,直到让你设置虚拟机的内存大小,建议为 1024M。如上图。后面就是要选择和虚拟机的网络类型有关的设置了,建议为“使用网络地址转换 NAT”,如下图。这一步我当时选择了自动桥接的功能,找了一个晚上的错误。。。时间就这样白花花的没了~~
之后还是一路的“下一步”,几乎都是使用它推荐的设置,我们就可以新建一个 centos,等待个几分钟然后就可以进入 centos 界面了。看到那一抹科技蓝,有没有让你心动了呢~~ 哈哈哈,你确实走好了第一步!
2)centos 下设置 ssh 服务无密码登录;
在桌面右击,选择 openin Terminal,这个就是 linux 的终端了。希望读者有一些 linux 操作系统的基础,这样子上手更快一些。不过要是没有的话,也没有关系,我们是面向新手的教程。
2.1. 先在 linux 命令行中输入 su,提示密码,输入你自己设置的密码,这样子你后面的操作都具有了 linux 系统下的最高权限——root 权限。
2.2. 在设置 ssh 无密码登录之前,有一个特别重要的要先出好:关闭 SELinux。这是因为 centos 会自动阻止你修改 sshservice,我们只有关闭 SELinux,重启才能生效。如何做,如下:
修改 /etc/selinux/config 文件
将 SELINUX=enforcing 改为 SELINUX=disabled
重启机器即可
(note:在 linux 下修改文件,vi 命令后会进入到文件窗口,按 i 进入 insert,修改完毕之后再按 esc 推出 insert,输入;:wq! 保存并退出~ 这里要感谢泡哥,改了半天都不行,还是泡哥指点迷津了~~)
2.3. 在 linux 命令行里输入:ssh-keygen -t rsa,然后一路回车。
root@hadoopName-desktop:~$ssh-keygen -t rsa
Generating public/private rsakey pair.
Enterfile in which to save the key (/home/zhangtao/.ssh/id_rsa): // 密钥保存位置,直接回车保持默认;
Createddirectory ‘/home/zhangtao/.ssh’.
Enter passphrase(empty for no passphrase): // 设置密钥的密码,空密码直接回车即可;
Enter samepassphrase again: // 确认上一步设置的密码。
然后进入 /root/.ssh/ 下面,会看到两个文件 id_rsa.pub,id_rsa,
然后执行 cp id_rsa.pub authorized_keys
然后 ssh localhost 验证是否成功,第一次要你输入 yes,以后就不需要了。
如下图,由于我又验证了一次,所以还需要输入 y,如果你是第一次验证是不要的。
至此,ssh 服务无密码登录设置完毕!
3)centos 下安装 jdk,并配置环境变量;
这一步中可以分为两步:安装 jdk、配置 jdk 环境变量。
3.1. 第一步:root 用户登陆,使用命令 mkdir /usr/program 新建目录 /usr/program , 下载 JDK 安装包 jdk-6u13-linux-i586.bin,将其复制到目录 /usr/program 下,用 cd 命令进入该目录,执行命令“./ jdk-6u13-linux-i586.bin”,命令运行完毕即安装完成,将在目录下生成文件夹 /jdk1.6.0_13,此即为 jdk 被成功安装到目录:/usr/program/jdk1.6.0_13 下。
3.2. root 用户登陆,命令行中执行命令“vi/etc/profile”, 并加入以下内容,配置环境变量 (注意 /etc/profile 这个文件很重要,后面 Hadoop 的配置还会用到)。
# set java environment
exportJAVA_HOME=/usr/program/jdk1.6.0_27
exportJRE_HOME=/usr/program/jdk1.6.0_27/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
在 vi 编辑器增加以上内容后保存退出,并执行以下命令使配置生效!
#chmod +x /etc/profile;增加执行权限
#source /etc/profile;使配置生效!
配置完毕后,在命令行中输入:java -version,就会出现安装 jdk 的信息。
这时,jdk 的安装和配置环境变量就成功了~
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-12/110514p2.htm
4)CentOS 下安装 Hadoop,并配置文件;
4.1. 安装 hadoop 之前要先知道你的 centos 中的 ip 地址:在终端中输入 ifconfig 就可以查看 ip 地址了。如下图:(我的是 192.168.154.129)
4.2. 下载 hadoop-0.20.2.tar.gz,将其拷贝到 /usr/local/hadoop 目录下,然后在该目录 /usr/local/hadoop 下解压安装生成文件 /hadoop-0.20.2(即为 hadoop 被安装到 /usr/local/hadoop/ hadoop-0. 20.2 文件夹下)。
命令如下: tar -zxvf hadoop-0.20.2.tar.gz 解压安装一步完成!
4.3. 首先配置 hadoop 的环境变量
命令“vi /etc/profile”
#set hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH
命令:source /etc/profile 使刚配置的文件生效!
进入 /usr/local/hadoop/hadoop-0.20.2/conf,配置 Hadoop 配置文件
4.4. 配置 hadoop-env.sh 文件
打开文件命令:vihadoop-env.sh
添加 # set javaenvironment
export JAVA_HOME=/usr/program/jdk1.6.0_27
编辑后保存退出(提示,输入:wq!)。其实仔细找一下就会发现 hadoop-env.sh 文件中本身就有 JAVA_HOME 这行,我们只需要把前面的注释 #取消,然后修改 HOME 的地址就好。如下图所示:
4.5. 配置 core-site.xml
[root@master conf]# vi core-site.xml
fs.default.name
hdfs://192.168.154.129:9000/
hadoop.tmp.dir
/usr/local/hadoop/hadoop-0.20.2/hadooptmp
(note:hdfs 后面的一定要是你的 centos 的 IP 地址,这就是为什么要在上面先 ifconfig 得到 ip 地址的原因。有些教程说的那种 localhost,是不正确的!后面和 eclipse 会连接不上!!这里又消耗了一个晚上的时间。。。)
如下图所示:
说明:hadoop 分布式文件系统的两个重要的目录结构,一个是 namenode 上名字空间的存放地方,一个是 datanode 数据块的存放地方,还有一些其他的文件存放地方,这些存放地方都是基于 hadoop.tmp.dir 目录的,比如 namenode 的名字空间存放地方就是 ${hadoop.tmp.dir}/dfs/name,datanode 数据块的存放地方就是 ${hadoop.tmp.dir}/dfs/data,所以设置好 hadoop.tmp.dir 目录后,其他的重要目录都是在这个目录下面,这是一个根目录。我设置的是 /usr/local/hadoop/hadoop-0.20.2/hadooptmp, 当然这个目录必须是存在的。
4.6. 配置 hdfs-site.xml
dfs.replication
1
dfs.permissions
false
“hdfs-site.xml” 15L, 331C
(note:其中 dfs.replication 的 value 为 1 是因为我们这里配置的是单机伪分布式,只有一台机子~ 后面的 dfs.permissions 是为了让用户有权限~)
4.7. 配置 mapred-site.xml
[root@master conf]# vi mapred-site.xml
mapred.job.tracker
192.168.154.129:9001
如下图:
4.8. masters 文件和 slaves 文件(一般此二文件的默认内容即为下述内容,无需重新配置)
[root@hadoop conf]# vi masters
192.168.154
[root@hadoop conf]# vi slaves
192.168.154
注:因为在伪分布模式下,作为 master 的 namenode 与作为 slave 的 datanode 是同一台服务器,所以配置文件中的 ip 是一样的。
4.9. 主机名和 IP 解析配置 (这一步非常重要!!!)
首先 [root@hadoop~]# vi /etc/hosts,
然后 [root@hadoop~]# vi /etc/hostname,
最后 [root@hadoop~]# vi /etc/sysconfig/network。
说明:这三个位置的配置必须协调一致,Hadpoop 才能正常工作!主机名的配置非常重要!
4.9. 启动 hadoop
进入 /usr/local/hadoop/hadoop-0.20.2/bin 目录下,输入 hadoop namenode -format 格式化 namenode。
启动 hadoop 所有进程,输入 start-all.sh:
验证 hadoop 有没有起来,输入 jps:
如果红圈中的 Tasktracker, JobTracker, DataNode, Namenode 都起来了,说明你的 hadoop 安装成功!
说明:1.secondaryname 是 namenode 的一个备份,里面同样保存了名字空间和文件到文件块的 map 关系。建议运行在另外一台机器上,这样 master 死掉之后,还可以通过 secondaryname 所在的机器找回名字空间,和文件到文件块得 map 关系数据,恢复 namenode。
2. 启动之后,在 /usr/local/hadoop/hadoop-1.0.1/hadooptmp 下的 dfs 文件夹里会生成 data 目录,这里面存放的是 datanode 上的数据块数据,因为笔者用的是单机,所以 name 和 data 都在一个机器上,如果是集群的话,namenode 所在的机器上只会有 name 文件夹,而 datanode 上只会有 data 文件夹。
5)windows 下安装 jdk 和 eclipse,并将 eclipse 与 centos 下的 hadoop 连接;
在 windows 下安装 jdk 这个很简单,之间下载 windows 下的 jdk 安装即可。Eclipse 直接把安装包解压即可使用。我们主要说一下如何将 eclipse 与 hadoop 连接。
5.1. 首先在要关闭 linux 的防火墙;
连接之前要关闭 linux 的防火墙,不然在 eclipse 的 project 中会一直提示“listing folder content…”,导致连接不上。关闭防火墙的方法如下:
输入命令:chkconfig iptables off,然后 reboot 重启即可。
重启之后,输入命令:/etc.init.d/iptables status 就可以查看防火墙关闭的状态了。(显示“iptables: Firewall is not running.”)
5.2. 插件安装和配置 eclipse 参数
下载插件 hadoop-eclipse-plugin-0.20.3-SNAPSHOT,放到 eclipse 下的 plugins 文件夹中,重启 eclipse 就可以找到 project explorer 一栏中的 DFS locations。如下图:
在 windows- preferences 中会多出一个 hadoopmap/reduce 选项, 选中这个选项, 然后把下载的 hadoop 根目录选中。
在视图中打开 map/reducelocation,你会发现在下面的 Location 区域会出现黄色大象图标。在 Loctaion 空白区域,右击:New Hadoop Location…
配置 general 的参数,具体如下:
点击 finish,关闭 eclipse,再重启 eclipse,会发现在 Location 区域有一个紫色的大象,右击它 edit,配置 Advanced parameters 的参数。(注意,这儿不断关闭、重启 eclipse 的过程一定要严格执行,不然在 advanced parameters 页会有一些参数不出来~)
设置 advancedparameters 页的参数是最耗费时间的,总共需要修改 3 个参数,当时一开始的时候发现它的页面下找不到:
第一个参数:hadoop.tmp.dir。这个默认是 /tmp/hadoop-{user.name}, 因为我们在 ore-defaulte.xml 里 hadoop.tmp.dir 设置的是 /usr/local/hadoop/hadoop-0.20.2/hadooptmp,所以这里我们也改成 /usr/local/hadoop/hadoop-0.20.2/hadooptmp, 其他基于这个目录属性也会自动改;
第二个参数:dfs.replication。这个这里默认是 3,因为我们再 hdfs-site.xml 里面设置成了 1,所以这里也要设置成 1;
第三个参数:hadoop.job.ugi。这里要填写:hadoop,Tardis,逗号前面的是连接的 hadoop 的用户,逗号后面就写 Tardis。
(note:这里要说一下,一般而言第一个参数 hadoop.tmp.dir 很好出来,你按照前面的步骤重启 eclipse,在 advanced paramters 页面就可以直接找到它,修改即可;后面两个参数比较难出来,其中 hadoop.job.ugi 参数,一定要保证 linux 的用户名和 windows 的用户名相同才会有,不然是找不到的。直到现在我也不知道为什么有的时候就是找不到这两个参数,只有多关闭 - 重启 eclipse 几次,多试一试,网上的教程一直没有涉及到这个情况)
5.3.project 目录下会展示 hadoop 的 hdfs 的文件目录
按照上面设置好之后,我们会在 project 中发现 hadoop 中最重要的 hdfs 目录已经展示出来了。如下图:
至此,hadoop 与 eclipse 就成功的连接上了。我们的教程也就完整结束,下一次我们再说说怎么让 eclipse 上的 WordCount 程序,放在 hadoop 中运行,具体见 http://www.linuxidc.com/Linux/2014-12/110515.htm。
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
许久之前就计划学习 Hadoop 了,直到最近才提上日程。花费了一些时间才把 CentOS 下的 Hadoop 搭起来,前后经历的“挫折”绝对可以写成数千字的血泪史了。既有被网上教程坑了的苦逼遭遇,也有教研室大超师兄和实习公司的泡哥的爱心支援。今天终于可以坐下来说说如何在 CentOS 下安装 Hadoop 并与 Eclipse 连接这个问题。
先说一下要准备哪些软件和信息:
- VMware-workstation;
- CentOS-6.0-i386-bin-DVD;
- eclipse-jee-luna-SR1-win32;
- hadoop-0.20.2;
- jdk-6u27-linux-i586;
(由于 hadoop 对版本的要求较高,大家还是不要轻易更换版本,这里列出来的各种软件都是稳定发布版,网上很容易可以 download 到的)。
整个教程分为这样 5 个部分来说:1)在 Windows 下安装虚拟机 Vmware,并新建一个虚拟机装好 centos 系统;2)centos 下设置 ssh 服务无密码登录;3)centos 下安装 jdk,并配置环境变量;4)centos 下安装 hadoop,并配置文件;5)windows 下安装 jdk 和 eclipse,并将 eclipse 与 centos 下的 hadoop 连接。可以说这 5 个部分每一个都很重要,尤其是第 4)步。下面我们就详细说一下每一步该怎么做。
Step 0: 请大家先在 windows 下新建一个普通用户,用户名为 hadoop,我们所有的软件全在这个下面安装,用户名最好要是 hadoop,因为这个要和后面很多 username 相同,设为 hadoop 比较好记。
————————————– 分割线 ————————————–
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
————————————– 分割线 ————————————–
1)在 Windows 下安装虚拟机 Vmware,并新建一个虚拟机装好 centos 系统;
首先,下载 VMware-workstation 并安装,这步骤和一般 windows 下安装软件的过程是一样的,入门小白也会熟练操作,这里就节省点儿空间给后面重要的步骤了~
然后,在 Vmware 的主页上新建一个虚拟机,如下图:
一路下一步,直到让你选择系统镜像路径,我们选择 centos 系统映像,如上图,点击下一步。然后,需要你输入 linux 的用户名,这个比较重要,最好填写 hadoop,因为这个名字在后面要用到好多次!
后面还是一路的“下一步”,直到让你设置虚拟机的内存大小,建议为 1024M。如上图。后面就是要选择和虚拟机的网络类型有关的设置了,建议为“使用网络地址转换 NAT”,如下图。这一步我当时选择了自动桥接的功能,找了一个晚上的错误。。。时间就这样白花花的没了~~
之后还是一路的“下一步”,几乎都是使用它推荐的设置,我们就可以新建一个 centos,等待个几分钟然后就可以进入 centos 界面了。看到那一抹科技蓝,有没有让你心动了呢~~ 哈哈哈,你确实走好了第一步!
2)centos 下设置 ssh 服务无密码登录;
在桌面右击,选择 openin Terminal,这个就是 linux 的终端了。希望读者有一些 linux 操作系统的基础,这样子上手更快一些。不过要是没有的话,也没有关系,我们是面向新手的教程。
2.1. 先在 linux 命令行中输入 su,提示密码,输入你自己设置的密码,这样子你后面的操作都具有了 linux 系统下的最高权限——root 权限。
2.2. 在设置 ssh 无密码登录之前,有一个特别重要的要先出好:关闭 SELinux。这是因为 centos 会自动阻止你修改 sshservice,我们只有关闭 SELinux,重启才能生效。如何做,如下:
修改 /etc/selinux/config 文件
将 SELINUX=enforcing 改为 SELINUX=disabled
重启机器即可
(note:在 linux 下修改文件,vi 命令后会进入到文件窗口,按 i 进入 insert,修改完毕之后再按 esc 推出 insert,输入;:wq! 保存并退出~ 这里要感谢泡哥,改了半天都不行,还是泡哥指点迷津了~~)
2.3. 在 linux 命令行里输入:ssh-keygen -t rsa,然后一路回车。
root@hadoopName-desktop:~$ssh-keygen -t rsa
Generating public/private rsakey pair.
Enterfile in which to save the key (/home/zhangtao/.ssh/id_rsa): // 密钥保存位置,直接回车保持默认;
Createddirectory ‘/home/zhangtao/.ssh’.
Enter passphrase(empty for no passphrase): // 设置密钥的密码,空密码直接回车即可;
Enter samepassphrase again: // 确认上一步设置的密码。
然后进入 /root/.ssh/ 下面,会看到两个文件 id_rsa.pub,id_rsa,
然后执行 cp id_rsa.pub authorized_keys
然后 ssh localhost 验证是否成功,第一次要你输入 yes,以后就不需要了。
如下图,由于我又验证了一次,所以还需要输入 y,如果你是第一次验证是不要的。
至此,ssh 服务无密码登录设置完毕!
3)centos 下安装 jdk,并配置环境变量;
这一步中可以分为两步:安装 jdk、配置 jdk 环境变量。
3.1. 第一步:root 用户登陆,使用命令 mkdir /usr/program 新建目录 /usr/program , 下载 JDK 安装包 jdk-6u13-linux-i586.bin,将其复制到目录 /usr/program 下,用 cd 命令进入该目录,执行命令“./ jdk-6u13-linux-i586.bin”,命令运行完毕即安装完成,将在目录下生成文件夹 /jdk1.6.0_13,此即为 jdk 被成功安装到目录:/usr/program/jdk1.6.0_13 下。
3.2. root 用户登陆,命令行中执行命令“vi/etc/profile”, 并加入以下内容,配置环境变量 (注意 /etc/profile 这个文件很重要,后面 Hadoop 的配置还会用到)。
# set java environment
exportJAVA_HOME=/usr/program/jdk1.6.0_27
exportJRE_HOME=/usr/program/jdk1.6.0_27/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
在 vi 编辑器增加以上内容后保存退出,并执行以下命令使配置生效!
#chmod +x /etc/profile;增加执行权限
#source /etc/profile;使配置生效!
配置完毕后,在命令行中输入:java -version,就会出现安装 jdk 的信息。
这时,jdk 的安装和配置环境变量就成功了~
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-12/110514p2.htm