centos下hadoop-2.6.0完全分布式搭建

时间:2022-09-24 20:44:44

一、Hadoop运行模式:

Hadoop有三种运行模式,分别如下:

单机(非分布式)模式

伪分布式(用不同进程模仿分布式运行中的各类节点)模式

完全分布式模式

注:前两种可以在单机运行,最后一种用于真实的集群环境,通常用在生产环境上。我们可以搭建本地的伪分布式模式来模拟分布式环境的执行。

二、软硬件设备及安装前环境搭建:

操作系统:CentOS 6.5

软件版本:hadoop-2.6.0,jdk-1.7.0_79

 在每台linux虚拟机上,安装:vim,ssh

     sudo apt-get install vim

     sudo apt-get install ssh

集群架构:包括3个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通。节点IP地址分布如下:

主机名  IP   系统版本    Hadoopnode hadoop进程名

Master 192.168.137.100    CetOS6.5  master namenode,jobtracker

Slave1  192.168.137.101    CetOS 6.5  slave    datanode,tasktracker

Slave2  192.168.137.102    CetOS 6.5  slave    datanode,tasktracker

1:jdk-1.7.0——79安装:

上传jdk tar包。将其移动到/usr/lib/java目录中(如果/usr中没有java目录自行创建)。

#mvjdk-1.7.0_79 /usr/lib/java

2:添加环境变量配置jdk:

在/etc/profile中添加

JAVA_HOME=/usr/lib/java/jdk1.7.0_79
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportJAVA_HOME
exportPATH export CLASSPATH


3:生效java变量:

source/etc/profile

如图即表示jdk安装配置已完成。

centos下hadoop-2.6.0完全分布式搭建

4:修改主机名和网络配置:

#vim /etc/sysconfig/network

NETWORKING=yes

分别对三台主机设置:

HOSTNAME=Master

HOSTNAME=Slave0

HOSTNAME=Slave1

同时修改:hosts

#vim/etc/hosts

三台主机均添加如下:

在每台linux上,sudo vim /etc/hosts 编写hosts文件。将主机名和ip地址的映射填写进去。编辑完后,结果如下:

centos下hadoop-2.6.0完全分布式搭建

5:配置ssh,实现免密登陆:

无密码登陆,效果也就是在master上,通过 ssh slave0 或 ssh slave1 就可以登陆到对方计算机上。而且不用输入密码。

 添加hadoop用户并为其设置密码:

#useradd hadoop
#passwd hadoop
为hadoop用户配置root权限,让其可运行root命令。
#vim /etc/sudoers

centos下hadoop-2.6.0完全分布式搭建

切换到hadoop用户:su hadoop

    三台主机上,使用  ssh-keygen -t rsa    一路按回车就行了。

 

    刚才都作甚了呢?主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。

 

    打开~/.ssh 下面有三个文件

 

    authorized_keys,已认证的keys

 

    id_rsa,私钥

 

    id_rsa.pub,公钥  三个文件。

 

    下面就是关键的地方了,(我们要做ssh认证。进行下面操作前,可以先搜关于认证和加密区别以及各自的过程。)

 

    ①在master上将公钥放到authorized_keys里。命令:sudo cat id_rsa.pub >> authorized_keys

 

    ②将master上的authorized_keys放到其他linux的~/.ssh目录下。

(直接将三个主机的公钥放到authorizedkey中,然后分别将此文件放到三个主机的~/.ssh目录下面)

       命令:sudo scp authorized_keyshadoop@10.10.11.192:~/.ssh      

 

               sudo scp authorized_keys 远程主机用户名@远程主机名或ip:存放路径。

 

    ③修改authorized_keys权限,命令:chmod 644 authorized_keys

 

    ④测试是否成功

 

     在任意一台主机使用ssh Master/Slave0/Slave1不用密码,直接进入系统。这就表示成功了。

注:ssh连接The authenticity of host can't beestablished需要输入用户和密码才能登陆。

修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题

最后面添加:

StrictHostKeyCheckingno
UserKnownHostsFile/dev/null


三、hadoop上传安装于配置:

1:上传hadoop:

把hadoop上传到服务器并解压打/usr/local目录中

tar-zxvf hadoop-2.6.0.tar.gz -C /usr/local

切换到/usr/local目录下,修改hadoop-2.6.0的所有者。

chown -R hadoop.hadoop hadoop-2.6.0

centos下hadoop-2.6.0完全分布式搭建

2:vim ~/.bashrc修改bash配置文件,简单配置环境变量。

exportHADOOP_INSTALL=/usr/local/hadoop-2.6.0

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL
执行hdfs,如果看到hadoop提示,则,hadoo已经完成安装了。

3:创建hadoop的一些关键目录

代码如下:
mkdir /home/hadoop
cd /home/hadoop
mkdir hadoop2.6.0
cd /home/hadoop/hadoop2.6.0
mkdir tmp dfs
cd /home/hadoop/hadoop2.6.0/dfs
mkdir data name

4:hadoop配置:

4.1:配置hadoop-env.sh

cd/usr/local/hadoop-2.6.0/etc/hadoop
vim hadoop-env.sh

centos下hadoop-2.6.0完全分布式搭建

4.2:配置core-site.xml:

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop2.6.0/tmp</value>
</property>
</configuration>
此修改为自己master的主机名+9000
 <name>fs.default.name</name>          <value>hdfs://Master:9000</value>  

4.3:配置hdfs-site.xml:

cd/usr/local/hadoop-2.6.0/etc/hadoop
代码如下:
<pre name="code" class="plain"><configuration><property>    <name>dfs.name.dir</name>    <value>/home/hadoop/hadoop2.6.0/dfs/name</value>    <description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.</description></property><property>    <name>dfs.data.dir</name>    <value>/home/hadoop/hadoop2.6.0/dfs/data</value>    <description>Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks.</description> </property><property>    <name>dfs.replication</name>        <value>1</value></property></configuration>
 

4.4:配置:mapred-site.xml:

代码如下:
<property>
<name>mapred.job.tracker</name>
<value>Master:9001</value>
</property>
注:value为master主机名。

注意:如果/usr/local/hadoop/etc/hadoop/mapred-site.xml文件没有但是有/usr/local/hadoop/etc/hadoop/mapred-site.xml.template那么最好修改下面这个文件,然后复制一份,改名为上面的名字

4.5:修改配置slaves:

centos下hadoop-2.6.0完全分布式搭建

4.6:格式化HDFS文件系统的namenode:

cd /usr/local/hadoop-2.6.0
bin/hdfs namenode -format

四、hadoop集群启动与关闭:

/usr/local/hadoop-2.6.0/sbin/start-dfs.sh //这个是启动
/usr/local/hadoop-2.6.0/sbin/stop-dfs.sh //这个是关闭

启动完成以后使用jps查看输出:
如果master有三个进程,slave0,slave1均有两个相同的进程,此时我们的集群启动成功了。
Master:
centos下hadoop-2.6.0完全分布式搭建

Slave0:

centos下hadoop-2.6.0完全分布式搭建

Slave1:

centos下hadoop-2.6.0完全分布式搭建

至此,分布式搭建成功。