一、Hadoop的3中运行模式

1.1、单机模式。安装简单,几乎不用作任何配置,但仅限于调试用途;

1.2、伪分布式模式。在单节点上同时启动namenode、secondary namenode、datanode、JobTracker、TaskTracker 5个进程,模拟分布式运行的各个节点。

1.3、完全分布式模式。正常的Hadoop集群,由多个节点构成。

 

二、Hadoop-2.6的完全分布式安装模式

2.0、准备文件

(1)Jdk1.7(或其他版本):jdk-7u79-linux-x64.tar.gz

(2)Hadoop安装包:hadoop-2.6.4.tar.gz

可在Apache官方网站或者镜像网站下载Hadoop。

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

下载hadoop-2.6.4-tar.gz后,使用tar解压。

2.1、为虚拟机添加hadoop账号

 

2.2、安装jdk

export JAVA_HOME=/home/hadoop/jdk1.7

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

此时,虚拟机拷贝多份。

--------------------------拷贝多份虚拟机---------------------------

2.3、修改虚拟机为固定IP地址(每个虚拟机都进行修改)

2.4、配置hostname(每个虚拟机都进行修改)

(1)sudo vim /etc/hostname

每个虚拟机都进行修改,内容分别为(master、slave1、slave2…)

2.5、配置hosts文件(每个虚拟机都进行修改)

sudo vim /etc/hosts,将每台主机的ip地址、主机名都添加进来,该文件的内容如下:

127.0.0.1 localhost

192.168.0.40  master

192.168.0.41  slave1

192.168.0.42  slave2

2.6、重启每个虚拟机

2.7、配置ssh

(1)ssh-keygen -t rsa   # 会有提示,都按回车就可以

(2)cd ~/.ssh    

(3)cat id_rsa.pub >> authorized_keys  # 将本机加入授权

(4)将所有虚拟机的authorized_keys文件的内容,全都合并到一起,然后替换掉所有的authorized_keys文件。

每个虚拟机都进行以上4步操作。

 

    测试:ssh localhost

       ssh 127.0.0.1

       ssh master

       ssh slave1

       ssh slave2

问题: ssh: connect to host localhost port 22: Connection refused

解决办法:sudo apt-get install openssh-server    // 安装ssh-serve

注意事项:在进行ssh测试时,在这一步:

Are you sure you want to continue connecting (yes/no)?

    此时输入:yes,而不能直接按回车,否则会连接失败。

 

--------------------------部署hadoop-2.6---------------------------

2.8、解压hadoop到某个目录下。并配置环境变量(所有虚拟机都要配置)

(1)sudo vim /etc/profile。输入如下内容:

    #hadoop 

export HADOOP_HOME=/home/hadoop/hadoop-2.6.4

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

(2)source /etc/profile,重新加载环境变量。

 

9~14步:仅修改一个虚拟机

2.9、修改配置文件 $HADOOP_HOME/etc/hadoop/core-site.xml

该配置文件是hadoop的全局配置文件,下面的内容是配置NameNode的ip地址、监听的端口,以及tmp目录(tmp内容需要修改)。配置该文件的内容如下:

<configuration>
<!--指定namenode的地址-->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
<!--用来指定使用hadoop时产生文件的存放目录--> 
        <property>
                <name>hadoop.tmp.dir</name>
               <value>/home/hadoop/hadoopdata</value>   
        </property>

</configuration>

属性fs.defaultFS表示NameNode节点地址,由“hdfs://主机名(或ip):端口号”组成。

2.10、修改配置文件 $HADOOP_HOME/etc/hadoop/hdfs-site.xml

该文件是hdfs的配置文件。修改内容如下:

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

 

<property>

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

<value>Master:50090</value>

</property>

 

<property>

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

<value>file:/home/hadoop/hdfs/namenode</value>

</property>

 

<property>

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

<value>file:/home/hadoop/hdfs/datanode</value>

</property>

</configuration>

(1)属性“dfs.namenode.name.dir”表示NameNode

存储命名空间和操作日志相关的元数据信息的本地文件系统目录,该项默认本地路

径为”/tmp/hadoop-{username}/dfs/name”;

(2)属性”dfs.datanode.data.dir“表示DataNode节点存储HDFS

文件的本地文件系统目 录,由”file://本地目录”组成,该项默认本地路

径为”/tmp/hadoop-{username}/dfs/data”。

(3)属性“dfs.namenode.secondary.http-address”表示SecondNameNode

主机及端口号(如果无需额外指定SecondNameNode角色,可以不进行此项配置);

(4)属性“dfs.replication”表示,一个文件上传到hadoop上的副本数目,该值为1表示该文件只保存一份。

2.11、修改配置文件 $HADOOP_HOME/etc/hadoop/mapred-site.xml

该文件是mapReduce的配置文件。修改内容如下:

<configuration>

<property>     

<name>mapreduce.framework.name</name>     <value>yarn</value>  

</property>

 

<property>

<name>mapreduce.job.tracker</name>

<value>hdfs://master:8888</value>

<final>true</final>

</property>

</configuration>

属性”mapreduce.framework.name“表示执行mapreduce任务所使用的运行框架,默认为 local,需要将其改为”yarn”.

2.12、修改配置文件 $HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>   

<property>     

     <name>yarn.resourcemanager.hostname</name>   

     <value>master</value>  

</property>   

 

<property>     

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

     <value>mapreduce_shuffle</value>           

</property>

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

 

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>604800</value>

</property>

</configuration>

(1)属性”yarn.resourcemanager.hostname”用来指定ResourceManager主机地址;

(2)属性”yarn.nodemanager.aux-service“表示MR applicatons所使用的shuffle工具类。

2.13、修改配置文件$HADOOP_HOME/etc/hadoop/hadoop-env.sh

配置JAVA_HOME

2.14、修改配置文件$HADOOP_HOME/libexec/hadoop-config.sh

在下面3行注释下面添加JAVA_HOME:

# Newer versions of glibc use an arena memory allocator that causes virtual

# memory usage to explode. This interacts badly with the many threads that

# we use in Hadoop. Tune the variable down to prevent vmem explosion.

export JAVA_HOME= . . .

 

2.15、把该配置好的hadoop目录移动到另外两个slave虚拟机中

先压缩hadoop成压缩包,然后利用scp移动到其他虚拟机。

scp /root/hadoop-2.6.4.tar.gz slave1:/home/hadoop

scp /root/hadoop-2.6.4.tar.gz slave2:/home/hadoop

然后,ssh连接到其他虚拟机之后,再解压。

 

2.16、仅修改master节点的配置文件:$HADOOP_HOME/etc/hadoop/slaves

集群中的master节点(NameNode、ResourceManager)需要配置其所拥有的slave节点,其中: 

NameNode节点的slaves内容为:slave1 slave2

----------------------------配置完毕---------------------------------

 

格式化并开启hadoop。以下操作需在master节点中运行。

2.17、格式化hdfs文件系统

$HADOOP_HOME/bin/hdfs namenode -format  //格式化

此处,需要hdfs-site.xml的配置文件的dir目录已经创建。

2.18、开启hadoop

分别登陆如下主机并执行相应命令(位于$HADOOP_HOME/sbin目录下): 

①  执行start-yarn.sh命令,启动集群资源管理系统yarn ;

②  执行start-dfs.sh命令启动集群HDFS文件系统;

 

查看进程的状态:输入jps

分别登陆各master/slave节点执行jps命令,查看每个节点是否有如下Java进程运行:

master节点运行的进程:ResourceManager、NameNode、SecondaryNameNode 

slave节点运行的进程: NodeManager、DataNode  

如果以上操作正常则说明Hadoop集群已经正常启动。

 

此外,还可通过浏览器查看hadoop的运行状态:

http://master:8088/

http://master:50070/