Ubuntu下搭建基于Eclipse的Hadoop平台

本文将讨论在Ubuntu下搭建Hadoop,同时在Eclipse下开发MapReduce程序。

环境配置:Ubuntu12.0.4、Hadoop0.20.2、Eclipse3.7.2、JDK6

第一步:安装JDK和配置环境变量

下载jdk的bin文件,jdk-6u30-linux-i586.bin,将其复制到/usr/local目录下

$ sudo cp jdk-6u30-linux-i586.bin /usr/local/

$ sudo ./jdk-6u30-linux-i586.bin   #安装jdk

$ sudo gedit /etc/profile   #添加环境变量

#在/etc/profile文件末尾输入如下内容

 #set java environment
JAVA_HOME=/usr/locla/java/jdk1.6.0_30
export JRE_HOME=JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

#接下来重新运行配置文件

$ source /etc/profile

第二步:添加Hadoop用户并使其拥有sudo权限(参考:http://blog.csdn.net/xw13106209/article/details/6064368)

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hadoop

$ su -

$ chmod u+w /etc/sudoers

$ gedit /etc/sudoers  

#在root ALL=(ALL) ALL后面添加hadoop ALL=(ALL) ALL

$ chmod u-w /etc/sudoers

第三步:安装ssh并配置ssh

$ sudo apt-get install ssh

#查看ssh版本 ssh -version

安装完成后,输入ssh localhost

输入当前用户的密码,回车就ok了。(说明安装成功,同时ssh登录需要密码)

切换到hadoop用户,进入到hadoop目录下,生成公钥,为了正确生成密钥,ls -ld ~查看/home/hadoop目录的权限,如下图

 

如下命令:

$ su hadoop

$ cd /home/hadoop

$ ssh-keygen -t rsa -P "" #实现无密码登录

一直按回车后,进入.ssh目录如下命令:

$ cd .ssh

将公钥拷贝到authorized_keys中,如下命令:

$ cp id_rsa.pub  authorized_keys

测试登录ssh

ssh localhost

若无需要输入密码,表示设置成功

第四步:安装Hadoop

切换到hadoop用户下,同时将hadoop拷贝到/home/hadoop目录下

$ cp -r /home/XXX/hadoop0.20.2 /home/hadoop/

第五步:配置Hadoop

(1)配置conf/hadoop-env.sh文件

export JAVA_HOME=/usr/locla/java/jdk1.6.0_30

修改为jdk的安装位置。

(2)配置conf/core-site.xml,core-default.xml在src/core目录下

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.default.name</name>
  <value>hdfs://localhost:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
 <value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>

1fs.default.nameNameNodeURIhdfs://主机名:端口/
2
hadoop.tmp.dirHadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。

(3)配置conf/mapred-site.xml,mapred-default.xml在src/mapred目录下

<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>localhost:9001</value>
</property>
<property>
  <name>mapred.local.dir</name>
 <value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>

1mapred.job.trackerJobTracker的主机(或者IP)和端口。主机:端口。

(4)配置conf/hdfs-site.xml,hdfs-default.xml在src/hdfs目录下

<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/dfs/name1, /home/hadoop/dfs/name2</value> #hadoop
name目录路径
<description>  </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/dfs/data1, /home/hadoop/dfs/data2</value>
<description> </description>
</property>
<property>
  <name>dfs.replication</name>
  <!--
我们的集群又一个结点,所以rep一 -->
  <value>1</vaue>
</property>
</configuration>

1   dfs.name.dirNameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
2
   dfs.data.dirDataNode存放块数据的本地文件系统路径,逗号分割的列表。当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
3
dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

(5)配置masters和slaves

配置conf/mastersconf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。

第六步:启动Hadoop

切换到hadoop用户

$ su hadoop

进入hadoop目录,命令如下:

$ cd /home/hadoop/hadoop0.20.2

格式化hdfs文件系统,命令如下:

$ bin/hadoop namenode -format

启动hadoop,命令如下:

$ bin/start-all.sh

关闭hadoop,命令如下:

$ bin/stop-all.sh

查看hadoop守护进程,命令如下:

jps

第七步:管理和查看Hadoop运行状态

NameNode - http://localhost:50070/
JobTracker - http://localhost:50030/

第八步:测试Hadoop

新建目录input到hdfs,命令如下:

$ bin/hadoop fs -mkdir input

上传文件到input目录,命令如下:

$ bin/hadoop fs -put  /home/hadoop/words.txt input

运行WordCount程序,命令如下:

$bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output

查看结果,命令如下:

$ bin/hadoop fs -cat output/part-00000

 

基于Eclipse平台开发MapReduce程序

步骤如下:

添加hadoop插件到eclipse/plugins目录下,命令如下:

$ cp /home/hadoop/hadoop-eclipse-plugin-0.20.3-SNAPSHOT.jar /usr/lib/eclipse/plugins

启动eclipse后,打到MapReduce视图,操作如下:

Window -> Open Perspective -> Other 选择Map/Reduce

在eclipse下端,控制台旁边会多一个Tab,叫“Map/Reduce Locations”,在下面空白的地方点右键,选择“New Hadoop location...”

在弹出的对话框中填写如下内容:

Location name:local
Map/Reduce Master
(Job Tracker的IP和端口,根据mapred-site.xml中配置的mapred.job.tracker来填写)
DFS Master(Name Node的IP和端口,根据core-site.xml中配置的fs.default.name来填写)

添加WordCount程序,同时配置输入参数

Run As -> Run Configures... 选择WordCount程序,在Arguments中配置运行参数:/user/hadoop/input /user/hadoop/output

以run on hadoop运行WordCount

 

 

 

 

你可能感兴趣的:(eclipse,hadoop,ubuntu,NameNode)