当前位置: > Linux集群 > Hadoop >

Hadoop完全分布式搭建(4)

时间:2017-02-05 23:35来源:linux.it.net.cn 作者:IT

 

4、Hadoop集群安装

        所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置hadoop需要以"root"的身份进行。

 

4.1 安装hadoop

        首先用root用户登录"Master.Hadoop"机器,查看我们之前用FTP上传至"/home/Hadoop"上传的"hadoop-1.0.0.tar.gz"。

 

Hadoop完全分布式搭建

 

        接着把"hadoop-1.0.0.tar.gz"复制到"/usr"目录下面。

 

cp /home/hadoop/hadoop-1.0.0.tar.gz /usr

 

Hadoop完全分布式搭建

 

        下一步进入"/usr"目录下,用下面命令把"hadoop-1.0.0.tar.gz"进行解压,并将其命名为"hadoop",把该文件夹的读权限分配给普通用户hadoop,然后删除"hadoop-1.0.0.tar.gz"安装包。

 

cd /usr #进入"/usr"目录

tar –zxvf hadoop-1.0.0.tar.gz #解压"hadoop-1.0.0.tar.gz"安装包

mv hadoop-1.0.0 hadoop #将"hadoop-1.0.0"文件夹重命名"hadoop"

chown –R hadoop:hadoop hadoop #将文件夹"hadoop"读权限分配给hadoop用户

rm –rf hadoop-1.0.0.tar.gz                 #删除"hadoop-1.0.0.tar.gz"安装包

 

Hadoop完全分布式搭建

 

        解压后,并重命名。

 

Hadoop完全分布式搭建

 

        把"/usr/hadoop"读权限分配给hadoop用户(非常重要)

 

Hadoop完全分布式搭建

 

        删除"hadoop-1.0.0.tar.gz"安装包

 

Hadoop完全分布式搭建

 

        最后在"/usr/hadoop"下面创建tmp文件夹,把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件(配置java环境变量的文件),将以下语句添加到末尾,并使其有效:

 

# set hadoop path

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

 

    1)在"/usr/hadoop"创建"tmp"文件夹

 

mkdir /usr/hadoop/tmp

 

Hadoop完全分布式搭建

 

    2)配置"/etc/profile"

 

vim /etc/profile

 

Hadoop完全分布式搭建

 

        配置后的文件如下:

 

Hadoop完全分布式搭建

    

3)重启"/etc/profile"

 

source /etc/profile

 

Hadoop完全分布式搭建

 

4.2 配置hadoop

        1)配置hadoop-env.sh

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

 

Hadoop完全分布式搭建

 

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

 

# set java environment

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

 

Hadoop完全分布式搭建

 

        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

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

        A base for other temporary directories.

   

 

   

        fs.default.name

        hdfs://192.168.1.2:9000

   

 

 

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

    用下面命令进行编辑:

 

Hadoop完全分布式搭建

 

    编辑结果显示如下:

 

Hadoop完全分布式搭建

 

        3)配置hdfs-site.xml文件

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

 

   

        dfs.replication

        1

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

   

 

        用下面命令进行编辑:

 

Hadoop完全分布式搭建

 

        编辑结果显示如下:

 

Hadoop完全分布式搭建

 

        4)配置mapred-site.xml文件

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

 

   

        mapred.job.tracker

        http://192.168.1.2:9001

   

 

 

        用下面命令进行编辑:

 

Hadoop完全分布式搭建

 

        编辑结果显示如下:

 

Hadoop完全分布式搭建

 

        5)配置masters文件

        有两种方案:

    (1)第一种

        修改localhost为Master.Hadoop

    (2)第二种

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

        为保险起见,启用第二种,因为万一忘记配置"/etc/hosts"局域网的DNS失效,这样就会出现意想不到的错误,但是一旦IP配对,网络畅通,就能通过IP找到相应主机。

        用下面命令进行修改:

 

Hadoop完全分布式搭建

 

        编辑结果显示如下:

 

Hadoop完全分布式搭建

 

    6)配置slaves文件(Master主机特有)

    有两种方案:

    (1)第一种

去掉"localhost",每行只添加一个主机名,把剩余的Slave主机名都填上。

        例如:添加形式如下

 

Slave1.Hadoop

Slave2.Hadoop

Slave3.Hadoop

 

    (2)第二种

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

        例如:添加形式如下

 

192.168.1.3

192.168.1.4

192.168.1.5

 

        原因和添加"masters"文件一样,选择第二种方式。

        用下面命令进行修改:

 

Hadoop完全分布式搭建

 

        编辑结果如下:

 

Hadoop完全分布式搭建

 

        现在在Master机器上的Hadoop配置就结束了,剩下的就是配置Slave机器上的Hadoop。

 

        一种方式是按照上面的步骤,把Hadoop的安装包在用普通用户hadoop通过"scp"复制到其他机器的"/home/hadoop"目录下,然后根据实际情况进行安装配置,除了第6步,那是Master特有的。用下面命令格式进行。(备注:此时切换到普通用户hadoop)

 

scp ~/hadoop-1.0.0.tar.gz hadoop@服务器IP:~/

 

    例如:从"Master.Hadoop"到"Slave1.Hadoop"复制Hadoop的安装包。

 

Hadoop完全分布式搭建

 

    另一种方式是将 Master上配置好的hadoop所在文件夹"/usr/hadoop"复制到所有的Slave的"/usr"目录下(实际上Slave机器上的slavers文件是不必要的, 复制了也没问题)。用下面命令格式进行。(备注:此时用户可以为hadoop也可以为root)

    

scp -r /usr/hadoop root@服务器IP:/usr/

 

    例如:从"Master.Hadoop"到"Slave1.Hadoop"复制配置Hadoop的文件。

 

Hadoop完全分布式搭建

 

    上图中以root用户进行复制,当然不管是用户root还是hadoop,虽然Master机器上的"/usr/hadoop"文件夹用户hadoop有 权限,但是Slave1上的hadoop用户却没有"/usr"权限,所以没有创建文件夹的权限。所以无论是哪个用户进行拷贝,右面都是"root@机器 IP"格式。因为我们只是建立起了hadoop用户的SSH无密码连接,所以用root进行"scp"时,扔提示让你输入"Slave1.Hadoop" 服务器用户root的密码。

    查看"Slave1.Hadoop"服务器的"/usr"目录下是否已经存在"hadoop"文件夹,确认已经复制成功。查看结果如下:

 

Hadoop完全分布式搭建

 

        从上图中知道,hadoop文件夹确实已经复制了,但是我们发现hadoop权限是root,所以我们现在要给"Slave1.Hadoop"服务器上的用户hadoop添加对"/usr/hadoop"读权限。

        以root用户登录"Slave1.Hadoop",执行下面命令。

 

chown -R hadoop:hadoop(用户名:用户组) hadoop(文件夹)

 

Hadoop完全分布式搭建

 

        接着在"Slave1 .Hadoop"上修改"/etc/profile"文件(配置 java 环境变量的文件),将以下语句添加到末尾,并使其有效(source /etc/profile):

 

# set hadoop environment

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

 

        如果不知道怎么设置,可以查看前面"Master.Hadoop"机器的"/etc/profile"文件的配置,到此为此在一台Slave机器上的Hadoop配置就结束了。剩下的事儿就是照葫芦画瓢把剩余的几台Slave机器按照《从"Master.Hadoop"到"Slave1.Hadoop"复制Hadoop的安装包。》这个例子进行部署Hadoop。

 

4.3 启动及验证

        1)格式化HDFS文件系统

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

 

hadoop namenode -format

 

        某些书上和网上的某些资料中用下面命令执行。

 

Hadoop完全分布式搭建

 

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

 

Hadoop完全分布式搭建

 

        其实我们会发现我们的环境变量配置的是"$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完全分布式搭建

 

Hadoop完全分布式搭建

    

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

    

        2)启动hadoop

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

 

service iptables stop

 

        使用下面命令启动。

 

start-all.sh

 

Hadoop完全分布式搭建

 

        执行结果如下:

 

Hadoop完全分布式搭建

 

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

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

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

 

Hadoop完全分布式搭建

 

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

 

Hadoop完全分布式搭建

 

        3)验证hadoop

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

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

 

Hadoop完全分布式搭建

 

        在Slave1上用jps查看进程。

 

Hadoop完全分布式搭建

 

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

 

        (2)验证方式二:用"hadoop dfsadmin -report"

        用这个命令可以查看Hadoop集群的状态。

        Master服务器的状态:

 

Hadoop完全分布式搭建

 

        Slave服务器的状态

 

Hadoop完全分布式搭建

 

4.4 网页查看集群

        1)访问"http:192.168.1.2:50030"

 

Hadoop完全分布式搭建

 

        2)访问"http:192.168.1.2:50070"

 

Hadoop完全分布式搭建

(责任编辑:IT)

------分隔线----------------------------