ITPub博客

首页 > 大数据 > Hadoop > 安装配置hadoop

安装配置hadoop

Hadoop 作者:black_black 时间:2013-09-05 20:05:54 0 删除 编辑
1.通过ifconfig以及hostname命令查出本机hostname和IP

2.配置hosts文件(必须

  "/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。

  我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器,解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题

vim /etc/hosts

在进行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的"/etc/hosts"文件末尾中都要添加如下内容:

192.168.1.2 Master

192.168.1.3 Slave1

192.168.1.4 Slave2

192.168.1.5 Slave3

保存后ping192.168.1.5和pingslave3都能ping通即成功


3.SSH无密码验证配置

  Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用 无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到 NameNode。

当时我的电脑作为slave2使用,所以只需生成公钥给别人,并从别人那里获取他们的公钥即可

首先创建"Slave1.Hadoop"自己的公钥和私钥,并把自己的公钥追加到"authorized_keys"文件中。用到的命令如下:

        

ssh-keygen –t rsa –P ''或者直接 ssh-keygen即可,

这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys或者cat ~/.ssh/id_rsa.pub >> authorized_keys

接着是用命令"scp"复制"Slave1.Hadoop"的公钥"id_rsa.pub"到"Master.Hadoop"的"/home/hadoop/"目录下,并追加到"Master.Hadoop"的"authorized_keys"中。

[root@sun etc]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.10.139(139为对方Ip,他会自动追加到authorized_keys中,无需制定追加路径)或者scp ~/.ssh/id_rsa.pub     root@10.10.10.139:~/

ssh 10.10.10.139(ssh无密码登录到对方,并重复上述过程,直接吧对方的公钥追加到本地)

[root@对方~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.10.135(本地IP)


4.安装hadoop

下载hadoop-1.0.0.tar.gz

创建HADOOP_HOME并解压"hadoop-1.0.0.tar.gz"安装包到相应路径(例如HADOOP_HOME=/usr/hadoop)

tar –zxvf hadoop-1.0.0.tar.gz #

把"/usr/hadoop"读权限分配给hadoop用户(这一步是让相应用户对其具有读权限,若ssh总能连到root下,以root登录,则无需配置)

在HADOOP_HOME("/usr/hadoop")下创建"tmp"文件夹

mkdir /usr/hadoop/tmp

配置/etc/profile,将hadoop路径加进去

# set hadoop path

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

export HADOOP_INSTALL=/usr/hadoop

重启"/etc/profile"

source /etc/profile


5.配置hadoop

1)配置hadoop-env.sh

  该"hadoop-env.sh"文件位于"/usr/hadoop/conf"目录下。

  在文件的末尾添加下面内容。

# set java environment

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

  Hadoop配置文件在conf目录下,之前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。 由于Hadoop发展迅速,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三部分,配置文件也被分成了三个core- site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在 HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。

2)配置core-site.xml文件

  修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。

   

        hadoop.tmp.dir

        /usr/hadoop/tmp                           //tmp是上一步新建的文件夹

       备注:请先在 /usr/hadoop 目录下建立 tmp 文件夹)

        A base for other temporary directories.

   

<!-- file system properties -->

   

        fs.default.name

        hdfs://192.168.1.2:9000                 //master的IP

   

  备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。

3)配置hdfs-site.xml文件

  修改Hadoop中HDFS的配置,配置的备份方式默认为3。

 

   

        dfs.replication

        1

        (备注:replication 是数据副本数量,默认为3,salve少于3台就会报错)

   


4)配置mapred-site.xml文件

  修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

 

   

        mapred.job.tracker

        http://192.168.1.2:9001

   

5)配置masters文件

        去掉"localhost",加入Master机器的IP:192.168.1.2

配置slaves文件(Master主机特有——

去掉"localhost",加入集群中所有Slave机器的IP,每行一个。


6.启动验证

1)格式化HDFS文件系统

  在"Master.Hadoop"上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh)

hadoop namenode -format

输入命令:bin/hadoop namenode -format看是否成功

  我们在看好多文档包括有些书上,按照他们的hadoop环境变量进行配置后,并立即使其生效,但是执行发现没有找见"bin/hadoop"这个命令。

 若显示没有那个文件或目录则需修改/etc/profile

其实我们会发现我们的环境变量配置的是"$HADOOP_HOME/bin",我们已经把bin包含进入了,所以执行时,加上"bin"反而找不到该命令,除非我们的hadoop坏境变量如下设置。

# set hadoop path

export HADOOP_HOME=/usr/hadoop

修改export PATH=$PATH : $HADOOP_HOME :$HADOOP_HOME/bin

 

  这样就能直接使用"bin/hadoop"也可以直接使用"hadoop",现在不管哪种情况,hadoop命令都能找见了。我们也没有必要重新在设置hadoop环境变量了,只需要记住执行Hadoop命令时不需要在前面加"bin"就可以了。

    

  从上图中知道我们已经成功格式话了,但是美中不足就是出现了一个警告,从网上的得知这个警告并不影响hadoop执行,但是也有办法解决,详情看后面的"常见问题FAQ"。

  2)启动hadoop

  在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。

service iptables stop

  使用下面命令启动。

start-all.sh

  执行结果如下:

 

  可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,…。

  启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。

  查看Master中"/usr/hadoop/tmp"文件夹内容

 

 

  查看Slave1中"/usr/hadoop/tmp"文件夹内容。

 

 

  3)验证hadoop

  (1)验证方法一:用"jps"命令

  在Master上用 java自带的小工具jps查看进程。

 

 

  在Slave1上用jps查看进程。

 

 

  如果在查看Slave机器中发现"DataNode"和"TaskTracker"没有起来时,先查看一下日志的,如果 是"namespaceID"不一致问题,采用"常见问题FAQ6.2"进行解决,如果是"No route to host"问题,采用"常见问题FAQ6.3"进行解决。


7.网页查看集群 

1)访问"http:192.168.1.2:50030"

2)访问"http:192.168.1.2:50070"

 参考网站:http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/184818/viewspace-1114390/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论