怎样在Centos下安装hadoop并与Eclipse连接?

怎样在Centos下安装hadoop并与Eclipse连接?

    许久之前就计划学习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对版本号的要求较高,大家还是不要轻易更换版本号。这里列出来的各种软件都是稳定公布版,网上非常easy能够download到的)。

 

    整个教程分为这样5个部分来说:1)在Windows下安装虚拟机Vmware。并新建一个虚拟机装好centos系统;2)centos下设置ssh服务无password登录;3)centos下安装jdk。并配置环境变量。4)centos下安装hadoop。并配置文件;5)windows下安装jdk和eclipse。并将eclipse与centos下的hadoop连接。能够说这5个部分每个都非常重要,尤其是第4)步。

以下我们就具体说一下每一步该怎么做。

Step 0: 请大家先在windows下新建一个普通用户,username为hadoop。我们全部的软件全在这个以下安装,username最好要是hadoop,由于这个要和后面非常多username同样,设为hadoop比較好记。

 

1)在Windows下安装虚拟机Vmware,并新建一个虚拟机装好centos系统;

    首先,下载VMware-workstation并安装。这步骤和一般windows下安装软件的过程是一样的。入门小白也会熟练操作。这里就节省点儿空间给后面重要的步骤了~

然后,在Vmware的主页上新建一个虚拟机,例如以下图:


    

一路下一步,直到让你选择系统镜像路径。我们选择centos系统映像。如上图。点击下一步。然后,须要你输入linux的username。这个比較重要,最好填写hadoop,由于这个名字在后面要用到好多次。





    后面还是一路的“下一步”,直到让你设置虚拟机的内存大小,建议为1024M。如上图。后面就是要选择和虚拟机的网络类型有关的设置了,建议为“使用网络地址转换NAT”,例如以下图。这一步我当时选择了自己主动桥接的功能,找了一个晚上的错误。。。

时间就这样白花花的没了~~



    之后还是一路的“下一步”,差点儿都是使用它推荐的设置。我们就能够新建一个centos。等待个几分钟然后就能够进入centos界面了。

看到那一抹科技蓝。有没有让你心动了呢~~哈哈哈,你确实走好了第一步!

2centos下设置ssh服务无password登录;

    在桌面右击,选择openin Terminal,这个就是linux的终端了。希望读者有一些linux操作系统的基础,这样子上手更快一些。只是要是没有的话,也没有关系,我们是面向新手的教程。





    2.1. 先在linux命令行中输入su,提示password。输入你自己设置的password,这样子你后面的操作都具有了linux系统下的最高权限——root权限。

    2.2. 在设置ssh无password登录之前。有一个特别重要的要先出好:关闭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): //设置密钥的password。空password直接回车就可以;

Enter samepassphrase again: //确认上一步设置的password。

然后进入 /root/.ssh/以下,会看到两个文件 id_rsa.pub。id_rsa,

然后运行cp id_rsa.pub  authorized_keys

然后 ssh localhost 验证是否成功,第一次要你输入yes,以后就不须要了。

例如以下图,因为我又验证了一次。所以还须要输入y。假设你是第一次验证是不要的。

 


    至此。ssh服务无password登录设置完成!

3centos下安装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的安装和配置环境变量就成功了~

    4centos下安装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

<?

xml version="1.0"?>

<?

xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overridesin this file. -->

<configuration>

   <property>

    <name>fs.default.name</name>

    <value>hdfs://192.168.154.129:9000/</value>

   </property>

   <property> 

     <name>hadoop.tmp.dir</name> 

<value>/usr/local/hadoop/hadoop-0.20.2/hadooptmp</value> 

</property>

</configuration>

(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

<?

xml version="2.0"?

>

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

>

<!-- Put site-specific property overridesin this file. -->

<configuration>

<property>

    <name>dfs.replication</name>

     <value>1</value>

 </property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

</configuration>                                                              

"hdfs-site.xml" 15L, 331C



(note:当中dfs.replication的value为1是由于我们这里配置的是单机伪分布式,仅仅有一台机子~后面的dfs.permissions是为了让用户有权限~)

    4.7. 配置mapred-site.xml

[root@master conf]# vi mapred-site.xml

<?xml version="1.0"?

>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?

>

<!-- Put site-specific property overridesin this file. -->

<configuration>

  <property>

    <name>mapred.job.tracker</name>

     <value>192.168.154.129:9001</value>

  </property>

</configuration>

例如以下图:


    4.8.  masters文件和slaves文件(一般此二文件的默认内容即为下述内容,无需又一次配置)

[root@hadoop conf]# vi masters

192.168.154

[root@hadoop conf]# vi slaves

192.168.154


注:由于在伪分布模式下。作为master的namenode与作为slave的datanode是同一台server,所以配置文件里的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目录。

 

5windows下安装jdkeclipse。并将eclipsecentos下的hadoop连接;

    在windows下安装jdk这个非常easy,之间下载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的username和windows的username同样才会有。不然是找不到的。直到如今我也不知道为什么有的时候就是找不到这两个參数,仅仅有多关闭-重新启动eclipse几次,多试一试。网上的教程一直没有涉及到这个情况)

    5.3.project文件夹下会展示hadoophdfs的文件文件夹

依照上面设置好之后,我们会在project中发现hadoop中最重要的hdfs文件夹已经展示出来了。例如以下图:

至此,hadoop与eclipse就成功的连接上了。我们的教程也就完整结束,下一次我们再说说怎么让eclipse上的WordCount程序。放在hadoop中执行。






posted on 2017-04-28 19:21  ljbguanli  阅读(377)  评论(0编辑  收藏  举报