Hadoop0.20.1分布式文件系统配置

Hadoop 的搭建

Hadoop 的下地址:

http://www.apache.org/dyn/closer.cgi/hadoop/core/

版本:hadoop0.20.1

JDK 的安装:

要求必安装 jdk1.5.07 以上的版本。

境的搭建:

1 硬件

采用了 3 台机器来构建,都安装的是 ubuntu10系,并且都有一个名 “sam“的,如下

主机名称:hdfs1 ip:192.168.2.227

主机名称:hdfs2 ip:192.168.1.247

主机名称:hdfs3 ip:192.168.1.249

功能:NameNode,JobTracker

功能:DataNode,TaskTracker

功能:DataNode,TaskTracker

重点:修改 3 台机器的/etc/hosts,彼此的主机名称和 ip 都能利解析,且机器名不一

127.0.0.1  localhost

127.0.1.1  sam-desktop

192.168.2.227   hdfs1

192.168.1.247   hdfs3

192.168.1.249   hdfs2

 

2、 台机器都要安装 java 境,

的路径 “ /usr/java/jdk1.6.0_21“, 并添加到系统环 sudo gedit /etc/profile

JAVA_HOME=/usr/java/jdk1.6.0_21

export JAVA_HOME

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib.dt.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

 

3、 下 hadoop0.20.1,将 hadoop

 /usr/hadoop/,建最好也将 hadoop 的目添加到量里面去:

HADOOP_HOME=/usr/hadoop/hadoop-0.21.0

export HADOOP_HOME

HADOOP_CONF_DIR=$HADOOP_HOME/conf # hadoop 的配置文件目

export HADOOP_CONF_DIR

HADOOP_LOG_DIR=$HADOOP_HOME/log #存放运行日志目

export HADOOP_LOG_DIR

export PATH=$PATH:$HADOOP_HOME/bin

 

4、 安装 ssh,并生成公和私

sam@sam-desktop$>运行 ssh-keygen -t rsa,根据屏幕提示直接选择“回

>会在用~/.ssh/生两个文件,id_rsa,id_rsa.pub

>cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

以上配置完成后,行一下 ssh localhsot,确你的台机器都可以使用 ssh

 

5、 拷authorized_keys

将 master 服器上的 authorized_keys 的内容加到 slave 两台机器的 authorized_keys 文件中。 master 也可以

不需要密码访问 2 台 slave 服器。

sudo scp authorized_keys hdfs2:/home/sam/.ssh/

sudo scp authorized_keys hdfs3:/home/sam/.ssh/

ssh hdfs2

ssh hdfs3

 

6 修改 hadoop [conf/masters][conf/slaves]

接下来,我要修改 hadoop 的[conf/masters]、[conf/slaves] 2 个文件:

Master (<HADOOP_HOME>/conf/masters):hdfs1

Slave (<HADOOP_HOME>/conf/slaves):hdfs2 hdfs3

 

7、 修改[conf/hadoop-env.sh]:

export JAVA_HOME=/usr/java/jdk1.6.0_21

 

8 修改core-site.xmlhdfs-site.xmlmapred-site.xml

修改core-site.xml(hdfs和mapreduce中很普通的I/O),hdfs-site.xml(datanode配置|HDFS后台程序置的配置:名称,第二名称点和数据),mapred-site.xml,有 hadoop 的性能,需要研究

<configuration>

   <property>

     <name>fs.default.name</name>//你的 namenode 的配置,机器名加端口

     <value>hdfs://hdfs1:9000</value>

   </property>

</configuration>

 

<configuration>

 

    <property>

       <name>dfs.replication</name>//数据需要份的数量,默是三

       <value>3</value>

    </property>

 

    <property>

       <name>dfs.data.dir</name>

       <value>/usr/hadoop/hadoop-0.21.0/data</value>

    </property>

 

    <property>

       <name>dfs.name.dir</name>

       <value>/usr/hadoop/hadoop-0.21.0/namenode/</value>

    </property>

 

    <property>

       <name>hadoop.tmp.dir</name>//Hadoop 的默认临时路径,个最好配置

       <value>/usr/hadoop/hadoop-0.21.0/tmp/</value>

    </property>

 

    <property>

       <name>dfs.block.size</name>//block 的大小,位字,后面会提到用,必 512 的倍数,因采用crc 作文件完整性校

       <value>5120000</value>

       <description>The default block size for new files.</description>

    </property>

 

</configuration>

 

<configuration>

    <property>

        <name>mapred.job.tracker</name>//你的 JobTracker 的配置,机器名加端口

        <value>hdfs1:9001</value>

    </property>

 

    <property>

       <name>mapred.tasktracker.map.tasks.maximum</name>

       <value>4</value>

    </property>

 

    <property>

       <name>mapred.tasktracker.reduce.tasks.maximum</name>

       <value>4</value>

    </property>

 

    <property>

       <name>mapred.child.java.opts</name>//java 虚机的一些参数可以参照配置

       <value>-Xmx512m</value>

    </property>

</configuration>

 

9、 hadoop 的整体境拷

然后将 hadoop 的整体境拷 hdfs2、hdfs3 上面去

scp -r /usr/hadoop/hadoop-0.21.0 hdfs2:/usr/hadoop/hadoop-0.21.0

scp -r /usr/hadoop/hadoop-0.21.0 hdfs3:/usr/hadoop/hadoop-0.21.0

 

10、namenode 上面格式化一个新的分布式文件系 HDFS

在 hdfs1 namenode 上面格式化一个新的分布式文件系 HDFS,就是 hdfs-site.xml 文件中指定

的 hadoop.tmp.dir 路径

<HADOOP_HOME>/bin/hadoop namenode –format

 

11 Hadoop

到此大致上就完成了 hadoop 境布署

hadoop:<HADOOP_HOME>/bin/start-all.sh

停止 hadoop:<HADOOP_HOME>/bin/stop-all.sh

:

(1) 行启 Hadoop 程后,

 >  在 master 服器会启 3 个 java ,分 NameNode,SecondNameNode,JobTracker,在 LOG 目

2 个文件,分别对应 NameNode 的运行日志和 JobTracker 的运行日志,

 >  在 slave 服器会启 2 个 java ,分别为 DataNode,TaskTracker,,在 LOG 目下会 2 个文件

别对应 DataNode 的运行日志和 TaskTracker 的运行日志,可以通过查看日志分析 hadoop 的启

否正确。

(2) 通 IE 浏览分布式文件系中的文件

 >  访问 http://hdfs1:50030 可以 JobTracker 的运行状

 >  访问 http://hdfs2:50060 可以 TaskTracker 的运行状

 >  访问 http://hdfs1:50070 可以 NameNode 以及整个分布式文件系的状


 

修改 Linux主机名

第一

#hostname myhost  //只是临时修改 重启后会恢成原来的

第二

vi /etc/sysconfig/network

修改其中的hostname

wq 退出

第三

vi /etc/hosts 修改中一个

wq 退出

 

ubuntu

第一

sudo gedit /etc/hostname

第二

sudo gedit /etc/hosts

找到127.0.1.1一行,把它右的旧主机名改成你的新主机名即可。重新启动计算机生效。

 


 

ssh keygen 免輸入密碼

懶得打密碼, 以 key 做認證登.

 

驟如下:

 

    * ssh-keygen -t rsa 或 ssh-keygen -d (dsa) => 生出 id_rsa, id_rsa.pub

    * scp id_rsa.pub server_hostname:~/.ssh/

    * ssh server_hostname

    * cat .ssh/id_rsa.pub >> .ssh/authorized_keys 即可

    * 這樣子就可以 key 認證登入, 不需輸入密碼.

 

注意: gen 時會問 Enter passphrase (empty for no passphrase): # 此處直接 enter 跳過,下次才不會詢問password

 

簡單解一下:

 

    * id_rsa: private key

    * id_rsa.pub: public key

 

將 public key(id_rsa.pub) 拷貝到遠端的電腦後, 加到那 user 的 .ssh/authorized_keys 中.

 

之後連線時, 就會用本機的 private key(id_rsa) 與遠端電腦的 public key(authorized_keys) 做認證, 確認完成就可以直接登入, 不需輸入帳號密碼, 而且也比較安全.

 

配置服

SSH服端很简单只需要运行

# sshd

 

就可以了。或者在/etc/rc.conf中加入

sshd_enable="YES"

就可以在次启动时行SSH服端了。

SSH服端的配置使用的配置文件是“/etc/ssh/sshd_config”,并且OpenSSH1.x和2.x的服器配置文件均此文件。

 

配置客

 

端想程服器只需要

#ssh 域名(或ip)

就可以了

比如想以fdy84用户连IP地址192.168.0.6的一台程服 需要

# ssh 192.168.0.6 -l fdy84

只要配置正确就可以端的服器了


 

基于EclipseHadoop应用开发环境的配置

基于Eclipse的Hadoop开发环境的配置

第一:下hadoop-0.20.1-eclipse-plugin.jar

界面是这样滴,选择Window->Open Perspective,可到一个窗口,里面有一个小象图标:Map/Reduce,点它,会打一个新的Perspective。然后点Window->Show View,可以打一个View,如1所示,

 

1


View中,我可以建一个或多个Hadoop运行境,个运行境,有点像,在Eclipse中配置JDBC数据库连接一。如2,3所示:

 

配置完成以后,示如1构一很像在Eclipse配置了,TomcatServer目一

 

你点view中的小象图标,很可能会一个错误


Cannot connect to the Map/Reduce location: sam@sam-desktop
java.io.IOException: Unknown protocol to name node: org.apache.hadoop.mapred.JobSubmissionProtocol
 at org.apache.hadoop.dfs.NameNode.getProtocolVersion(NameNode.java:84)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:452)
 at org.apache.hadoop.ipc.Server$Handler.run(Server.java:888)

我也遇到问题,很我郁,我愿想是不是我的服器哪里出了问题?后来才知道,是我的端口配置错误了,我在hdfs-site.xml中不是配置了:

<property>
<name>fs.default.name</name>
<value>hdfs://hdfs1:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://hdfs1:9001</value>
</property>

两个端口很重要,9000namenode听端口,而9001jobtracker听端口,在3的界面上新建DFS location候,可以看到Map/Reduce Master,当没弄明白,是什意思,在才知道,jobtracker所在机器及听端口,于是我置成:host=sam-desktop,port=9001,而DFS Master中勾Use M/R Master Host(意思是:是否使用与JobTracker相同的主机?)我的当然是勾上。端口当然也就是9000了,即host= sam-desktopport=9000

于是,the Map/Reduce location就不会再出现错误了。下面的用sam,因我的所有的ubuntu都是sam的用的。

 

个两个端口是否工作正常


可以用Web的方式来个两个端口是否工作正常,namenodeWeb访问端口是50070,由于我的namenode是建立在hdfs1上的,因此,我要用Web方式访问namenode,那浏览器中敲入地址:http://hdfs1:50070,你就会看到一个面,如下4

而9001是也是可以用Web方式来访问的,我的namenode和jobtracker是在一台机器上的,网址是http://hdfs1:50030,如果你配置成功,可以打如下5的面:

 

 

tasktracker可以Web方式访问,由于我的tasktracker是建立在hdfs2上的,因此网址是:http://hdfs2:50060,如果你配置成功,可以打如下6的面:

<p

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