hodoop安装步骤

来源:互联网 发布:数据库bms是什么意思 编辑:程序博客网 时间:2024/06/02 19:42
1.Hadoop 下载地址

http://mirror.bit.edu.cn/apache/hadoop/common/

建立hadoop运行帐号即为hadoop

2.集群专门设置一个用户组及用户,这部分比较简单,参考示例如下:

$ useradd hadoop

$ groupadd -G hadoop    hadoop在所有的机器上都建立相同的组(hadoop)和用户(hadoop)。(最好不要使用root安装,因为不推荐各个机器之间使用root访问 )

sudo groupadd hadoop    //设置hadoop

 上述4个结点均需要进行以上步骤来完成hadoop运行帐号的建立。 

3.把本机上的软件上传到其中的一台服务器上,用crt客户端的sftp可以上传

sftp> pwd

/home/centos

sftp> lcd soft/

sftp> lpwd

/home/h/soft

sftp> put /home/h/soft/hadoop-2.7.2.tar.gz /home/centos

Uploading hadoop-2.7.2.tar.gz to /home/centos/hadoop-2.7.2.tar.gz

  100% 207076KB   3286KB/s 00:01:03     

/home/h/soft/hadoop-2.7.2.tar.gz: 212046774 bytes transferred in 63 seconds (3286 KB/s)

sftp> 

4.把上传上来的软件分别在拷贝到其他服务器上

[centos@slavenode1 ~]$ sudo -s

[root@masternode centos]# ls

hadoop-2.7.2.tar.gz  jdk-7u79-linux-x64.tar.gz

[root@masternode centos]# pwd

/home/centos

[root@masternode centos]# scp /home/centos/* root@10.10.1.4:/opt/hadoop/

hadoop-2.7.2.tar.gz                                                                            100%  202MB 101.1MB/s   00:02    

jdk-7u79-linux-x64.tar.gz                                                                      100%  146MB  73.2MB/s   00:02    

[root@masternode centos]# scp /home/centos/* root@10.10.1.5:/opt/hadoop/

hadoop-2.7.2.tar.gz                                                                            100%  202MB 202.2MB/s   00:01    

jdk-7u79-linux-x64.tar.gz                                                                      100%  146MB 146.4MB/s   00:01    

[root@masternode centos]# scp /home/centos/* root@10.10.1.6:/opt/hadoop/

hadoop-2.7.2.tar.gz                                                                            100%  202MB 202.2MB/s   00:01    

jdk-7u79-linux-x64.tar.gz   

5.hadoop 机器部署

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

对于Hadoop的集群来讲,可以分成两大类角色:MasterSalve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任 务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统MapReduce在集群上实现了分布式计算任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

6.我的环境是在云主机中配置的,Hadoop集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通,节点IP地址分布如下:

 

虚拟机系统

机器名称

IP地址

CentOS release 6.6 (Final)

masternode.novalocal

10.10.10.4(125.208.30.88)

CentOS release 6.6 (Final)

Slavenode1.novalocal

10.10.10.3(125.208.30.89)

CentOS release 6.6 (Final)

Slavenode2.novalocal

10.10.10.5(125.208.30.90)

CentOS release 6.5 (Final)

slavenode3.novalocal

10.10.10.6(125.208.30.91)

7.修改文件/etc/hostname里的值即可,修改成功后用hostname命令查看当前主机名是否设置成功。

[root@masternode centos]# cat /etc/hosts

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.10.1.3 slavenode1.novalocal slavenode1

10.10.1.4 masternode.novalocal masternode

10.10.1.5 slavenode2.novalocal slavenode2

10.10.1.6 slavenode3.novalocal slavenode3

 

12.在主节点机器上设置ssh免密码登陆

 su - hadoop

1) 首先在主机器上核对ssh是否安装

[hadoop@masternode ~]# rpm -qa |grep ssh 

libssh2-1.4.2-1.el6.x86_64

openssh-5.3p1-104.el6_6.1.x86_64

openssh-server-5.3p1-104.el6_6.1.x86_64

openssh-clients-5.3p1-104.el6_6.1.x86_64

2) 生产密钥 

[hadoop@masternode ~]# cd .ssh/

[hadoop@masternode .ssh]# ls

authorized_keys

[hadoop@masternode .ssh]# cd /

[hadoop@masternode /]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /hadoop/.ssh/id_rsa.

Your public key has been saved in /hadoop/.ssh/id_rsa.pub.

The key fingerprint is:

e8:3d:75:11:0b:6a:a9:f5:39:e5:04:71:2e:94:21:94 hadoop@masternode.novalocal

The key's randomart image is:

+--[ RSA 2048]----+

|       .o.*+o    |

|        E=.= o   |

|        = . *    |

|       = . * .   |

|      o S = o    |

|     . . . o     |

|      . o        |

|         .       |

|                 |

+-----------------+

[hadoop@masternode /]# cd 

[hadoop@masternode ~]# cd .ssh/

[hadoop@masternode .ssh]# ls

authorized_keys  id_rsa  id_rsa.pub 生产的密钥

[hadoop@masternode .ssh]# cat id_rsa.pub >> authorized_keys

3)把密钥传输到其他节点机器上 

(1)用ssh-copy-id命令将公钥传送到远程主机上(这里以Slave1node3为例)。

[hadoop@masternode ~]# ssh-copy-id root@slavenode3

 

(2)如果在用命令ssh-copy-id时发现找不到该命令“ssh-copy-id:Command not found”,则可能是ssh服务的版本太低的原因,比如若你的机器是Redhat系统就可能该问题,解决办法是:手动复制本地的pubkey内容到远程服务器,命令如下:

 cat ~/.ssh/id_rsa.pub | ssh root@slavenode3 'cat >> ~/.ssh/authorized_keys'

该命令等价于下面两个命令:

①在本地机器上执行:scp ~/.ssh/id_rsa.pub root@slavenode3:/~

②到远程机器上执行:cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

[hadoop@masternode .ssh]# scp authorized_keys hadoop@125.208.3.89:/root/.ssh

lost connection

 

[hadoop@masternode .ssh]# vi authorized_keys 

cat id_rsa.pub >> authorized_keysd_rsa.pub 

[hadoop@masternode .ssh]# scp .ssh/authorized_keys hadoop@mslavenode1:~/.ssh/

[hadoop@masternode .ssh]# scp .ssh/authorized_keys hadoop@slavenode2:~/.ssh/

[hadoop@masternode .ssh]# scp .ssh/authorized_keys hadoop@slavenode3:~/.ssh/

 

[hadoop@masternode ~]# cat .ssh/authorized_keys 


 

13.把主机hosts拷贝到其他从机器上

[hadoop@masternode centos]# scp /etc/hosts hadoop@10.10.1.5:/etc/hosts

hosts                                                                                          100%  332     0.3KB/s   00:00    

[hadoop@masternode centos]# scp /etc/hosts hadoop@10.10.1.3:/etc/hosts

hosts                                                                                          100%  332     0.3KB/s   00:00    

[hadoop@masternode centos]# scp /etc/hosts hadoop@10.10.1.6:/etc/hosts

二.安装java软件

1)解压java软件包

   cd /usr/java/

tar -xvf jdk-7u79-linux-x64.tar.gz 

chown -R hadoop:hadoop jdk-7u79

 

2)编辑环境变量

编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容如下:

 vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_79/

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

3)使配置生效

保存并退出,执行下面命令使其配置立即生效。

source /etc/profile 或 . /etc/profile

 

Vi ~/.bash_profile 

export JAVA_HOME=/usr/java/jdk1.7.0_79/

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

#set hadoop path

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin

Source ~/.bash_profile

4)验证安装成功

配置完毕并生效后,用下面命令判断是否成功。

[hadoop@masternode java]# java -version

java version "1.7.0_79"

Java(TM) SE Runtime Environment (build 1.7.0_79-b15)

Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

5) 安装剩余机器java

通过scp命令格式把"/usr/java/"文件复制到其他Slave上面,剩下的事儿就是在其余的Slave服务器上按照上图的步骤配置环境变量和测试是否安装成功,这里以Slavenode2为例:

[hadoop@masternode java]# scp -r jdk1.7.0_79/ hadoop@10.10.1.3:/usr/java/

[hadoop@masternode java]# scp -r jdk1.7.0_79/ hadoop@10.10.1.5:/usr/java/

[hadoop@masternode java]# scp -r jdk1.7.0_79/ hadoop@10.10.1.6:/usr/java/

此时不可以选择较低版本的JDK进行安装因为所有集群中的JDK版本必须相同

三.安装hadoop软件包

 1 解压hadoop软件包

Cd /opt/hadoop/

 tar -xvf hadoop-2.7.2.tar.gz 

[root@masternode hadoop]# ls

hadoop-2.7.2         jdk1.7.0_79                lost+found

hadoop-2.7.2.tar.gz  jdk-7u79-linux-x64.tar.gz

[root@masternode hadoop]# cd hadoop-2.7.2

[root@masternode hadoop-2.7.2]# ls

bin  include  libexec      NOTICE.txt  sbin

etc  lib      LICENSE.txt  README.txt  share

2设置环境变量

并把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件,将以下语句添加到末尾,并使其生效(. /etc/profile):

#set hadoop path

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin

[root@masternode conf]# hadoop version

Hadoop 2.7.2

Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41

Compiled by jenkins on 2016-01-26T00:08Z

Compiled with protoc 2.5.0

From source with checksum d0fda26633fa762bff87ec759ebe689c

This command was run using /opt/hadoop/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar

3 创建临时目录

su - hadoop

[hadoop@masternode hadoop-2.7.2]# mkdir -p ~/tmp

[hadoop@masternode hadoop-2.7.2]# mkdir -p ~/dfs/data

[hadoop@masternode hadoop-2.7.2]# mkdir -p ~/dfs/name


4配置hadoop

修改配置文件

需要修改的配置文件主要有下面几个:

./core-site.xml 

./hdfs-site.xml 

./mapred-site.xml(开始的安装包中是没有这个文件的,需要将文

件./mapred-site.xml.template复制并且重名为mapred-site.xml)。

./yarn-site.xml 

./yarn-env.sh 

./hadoop-env.sh 

./slave

[root@masternode hadoop-2.7.2]# pwd

/opt/hadoop/hadoop-2.7.2

[root@masternode hadoop-2.7.2]# ls

bin  include  libexec      NOTICE.txt  sbin

etc  lib      LICENSE.txt  README.txt  share

[root@masternode hadoop-2.7.2]# cd etc/hadoop/

/opt/hadoop/hadoop-2.7.2/etc/hadoop

(1)配置hadoop-env.sh

配置 hadoop-env.sh文件-->修改JAVA_HOME

export JAVA_HOME=/usr/java/jdk1.7.0_79/

(2)配置yarn-env.sh文件 

配置 yarn-env.sh 文件-->>修改JAVA_HOME

# some Java parameters

export JAVA_HOME=/usr/java/jdk1.7.0_79/

(3)配置slaves

配置slaves文件-->>增加slave节点

slavenode1

slavenode2

slavenode3

 

 

(4)配置 core-site.xml文件

-->>增加hadoop核心配置(hdfs文件端口是9000、file://root/hadoop/tmp、)

<configuration>

 <property>

  <name>fs.defaultFS</name>

  <value>hdfs://masternode:9000</value>

 </property>

 

 <property>

  <name>io.file.buffer.size</name>

  <value>131072</value>

 </property>

 <property>

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

  <value>file:/home/hadoop/tmp</value>

  <description>Abasefor other temporary directories.</description>

 </property>

 <property>

  <name>hadoop.proxyuser.spark.hosts</name>

  <value>*</value>

 </property>

<property>

  <name>hadoop.proxyuser.spark.groups</name>

  <value>*</value>

 </property>

</configuration>

 

(5)配置  hdfs-site.xml 文件-->>增加hdfs配置信息(namenode、datanode端口和目录位置)

<configuration>

<property>

  <name>dfs.namenode.secondary.http-address</name>

  <value>masternode:9001</value>

 </property>

  <property>

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

   <value>file:/home/hadoop/dfs/name</value>

 </property>

 <property>

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

  <value>file:/home/hadoop/dfs/data</value>

  </property>

 <property>

  <name>dfs.replication</name>

  <value>3</value>

 </property>

 <property>

  <name>dfs.webhdfs.enabled</name>

  <value>true</value>

 </property>

</configuration>

(6)配置  mapred-site.xml 文件

-->>增加mapreduce配置(使用yarn框架、jobhistory使用地址以及web地址)

[root@masternode hadoop]# mv mapred-site.xml.template mapred-site.xml

 vi mapred-site.xml

<configuration>

<property>

   <name>mapreduce.framework.name</name>

   <value>yarn</value>

 </property>

 <property>

  <name>mapreduce.jobhistory.address</name>

  <value>masternode:10020</value>

 </property>

 <property>

  <name>mapreduce.jobhistory.webapp.address</name>

  <value>masternode:19888</value>

 </property>

 

</configuration>

(7)配置yarn-site.xml  文件-->>增加yarn功能

<configuration>

 

<!-- Site specific YARN configuration properties -->

 

 <property>

   <name>yarn.nodemanager.aux-services</name>

   <value>mapreduce_shuffle</value>

  </property>

  <property>

   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

   <value>org.apache.hadoop.mapred.ShuffleHandler</value>

  </property>

  <property>

   <name>yarn.resourcemanager.address</name>

   <value>masternode:8032</value>

  </property>

  <property>

   <name>yarn.resourcemanager.scheduler.address</name>

   <value>masternode:8030</value>

  </property>

  <property>

   <name>yarn.resourcemanager.resource-tracker.address</name>

   <value>masternode:8035</value>

  </property>

  <property>

   <name>yarn.resourcemanager.admin.address</name>

   <value>masternode:8033</value>

  </property>

  <property>

   <name>yarn.resourcemanager.webapp.address</name>

   <value>masternode:8088</value>

  </property>

 

</configuration>

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

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

chown -R hadoop:hadoop /opt/hadoop/hadoop-2.7.2

5.将配置好的hadoop文件copy到另一台slave机器上

[hadoop@masternode hadoop]# scp -r hadoop-2.7.2/ hadoop@10.10.1.4:/opt/hadoop/

[hadoop@masternode hadoop]# scp -r hadoop-2.7.2/ hadoop@10.10.1.5:/opt/hadoop/

[hadoop@masternode hadoop]# scp -r hadoop-2.7.2/ hadoop@10.10.1.6:/opt/hadoop/

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

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin

保存并退出,执行下面命令使其配置立即生效。

source /etc/profile 或 . /etc/profile

6.启动及验证

1)、格式化namenode:

[hadoop@masternode hadoop]# pwd

/opt/hadoop

[hadoop@masternode hadoop]# cd hadoop-2.7.2

[hadoop@masternode hadoop-2.7.2]# ls

bin  include  libexec      NOTICE.txt  sbin

etc  lib      LICENSE.txt  README.txt  share

[hadoop@masternode hadoop-2.7.2]# ./bin/hdfs namenode -format

2).启动hadoop

hadoop@masternode centos]# cd /opt/hadoop/hadoop-2.7.2

[hadoop@masternode hadoop-2.7.2]# sbin/start-all.sh 

7.验证hadoop

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

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

[hadoop@masternodehadoop-2.7.2]# jps 

19495 Jps

18849 NameNode

19051 SecondaryNameNode

19228 ResourceManager

[hadoop@masternode  centos]# jps

11664 Jps

11418 DataNode

11519 NodeManager

2)必须要关闭防火墙

[root@masternode hadoop-2.7.2]# service iptables stop

http://125.208.3.88:50070/dfshealth.html#tab-datanode

3)禁用selinux

    编辑 "/etc/selinux/config"文件,设置"SELINUX=disabled"

或者setenforce 0

8.网页查看集群

(1)访问"http://125.208.3.88:50070"

Hadoop安装完成之后,会有两个web管理界面,可以分别通过下面的url查看。 在浏览器中输入http://125.208.3.88:8088/,网址为master的ip: 

在浏览器中输入:http://125.208.3.88:50070/,网址为master结点所对应的IP: 

http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/ClusterSetup.html

9.HDFS的使用 

9.1 帮助 

如果配置好了环境变量,直接运行hdfs命令,不加任何参数就能得到hdfs的帮助。也可以用hdfs –help得到HDFS的帮助。

[hadoop@masternode hadoop]# hdfs -help

Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND

       where COMMAND is one of:

  dfs                  run a filesystem command on the file systems supported in Hadoop.

  classpath            prints the classpath

从上面可以看到,dfs命令是执行一个HDFS文件系统支持的命令。可以进一步查看dfs的帮助。下面列出的是hdfs的dfs命令支持的一些文件系统操作,实际上,具体的各个操作的格式可以也从下面看到具体的说明。

[hadoop@masternode hadoop]# hdfs dfs -help


0 0
原创粉丝点击