Hadoop-1.2.1分布式集群搭建(亲测有效版)

Hadoop-1.2.1分布式集群搭建

环境条件

操作系统:Ubuntu16.04(一台主机,两个虚拟机)

主机:linukey@192.168.0.7
虚拟机1:u1@192.168.0.12
虚拟机2:u2@192.168.0.13

必备软件:Hadoop-1.2.1、JDK、SSH(client+server)

安装jdk并配置环境

对于jdk的安装,可以用一个很方便的方法,就是利用ppa进行安装和配置,方法如下:

1.添加PPA源:sudo add-apt-repository ppa:webupd8team/java
2.刷新APT:sudo apt update
3.安装jdk:sudo apt-get install oracle-java8-installer
4.设置环境变量:sudo apt-get install oracle-java8-set-default

安装ssh-client

sudo apt install ssh-client

安装ssh-server

sudo apt install ssh-server

以上步骤分别在主机和两台虚拟机上执行。

配置ssh免密登录

我们需要配置ssh免密登录,以便能够让hadoop NameNode节点无密访问各个DataNode节点,方法如下:

1.在主机上执行:ssh-keygen
2.cd ~/.ssh
3.cat id_rsa.pub >> authorized_keys

刚刚三个步骤我们在主机上设置了自身的免密登录,下面我们再在两个虚拟机上执行一下步骤,让主机能够免密登录虚拟机,方法如下:

1.在虚拟机上执行:ssh-keygen
2.cd ~/.ssh
3.rm id_rsa.pub
4.scp linukey@192.168.0.7 ./
5.cat id_rsa.pub >> authroized_keys
6.ssh-keygen(问你是否覆盖,选择是)
7.cat id_rsa.pub >> authroized_keys

把以上7个步骤分别在两个虚拟机里面执行,就完成了主机在虚拟机上行的免密登录和虚拟机自身的免密登录

安装配置Hadoop-1.2.1

1.解压Hadoop-1.2.1包,并把Hadoop-1.2.1放在/opt目录下
2.cd /opt/hadoop-1.2.1/conf
3.sudo chown -R linukey hadoop-1.2.1
4.vim hadoop-env.sh
5.把export JAVA_HOME前面的#去掉,并添加上JAVA_HOHE的值,我们可以通过 echo JAVAHOMEJAVA_HOME的位置
6.sudo vim /etc/profile 把一下两行添加进去
export HADOOP_HOME=/opt/hadoop-1.2.1
export PATH=/opt/hadoop-1.2.1/bin:${PATH}

通过以上步骤,我们就把Hadoop-1.2.1单机模式搭建好了,下面我们来搭建Hadoop-1.2.1分布式集群

搭建hadoop-1.2.1分布式集群

分布式集群的搭建主要是对hadoop-1.2.1/conf下core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves这五个文件进行配置,这里踩了无数坑,网上的很多解决方案都没有提到这些坑,下面我们来看一下分布式集群的搭建:

  1. cd /opt/hadoop-1.2.1/conf
  2. vim core-site.xml
  3. 修改core-site.xml如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <!-- NameNode存放位置 -->
        <property>
               <name>fs.default.name</name>
               <value>hdfs://192.168.0.7:9000</value>
        </property>
        <!-- hadoop的临时文件夹 -->
        <property>
               <name>hadoop.tmp.dir</name>
               <value>/opt/hadoop-1.2.1/hadoop-data/tmp</value>
        </property>
</configuration>

4.修改hdfs-site.xml如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <!-- NameNode元数据的存储位置 -->
        <property>
                <name>dfs.name.dir</name>
                <value>/opt/hadoop-1.2.1/hadoop-data/hdfs/name</value>
        </property>
        <!-- DataNode的数据存储位置 -->
        <property>
                <name>dfs.data.dir</name>
                <value>/opt/hadoop-1.2.1/hadoop-data/hdfs/data</value>
        </property>
        <!-- 集群的副本数 -->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
</configuration>

5.修改mapred-site.xml如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <!-- 主机地址 -->
                <value>192.168.0.7:9001</value>
        </property>
</configuration>

6.修改master如下:

linukey@192.168.0.7

7.修改slaves如下:

u1@192.168.0.12
u2@192.168.0.13

通过以上几个步骤,我们就配置完了这五个文件,上面文件里面都是用的我的ip地址,改为自己的时候,对应着文章开头的ip地址和实际的ip地址修改就好,我们来说一下几个比较大的坑:

1.上面我们配置的dfs.name.dir、dfs.data.dir、dfs.tmp.dir,这三个属性配置的时候,一定要使用绝对路径才行,千万不要使用相对路径,比如 ~/hadoop-data,这个就打错特错了,因为当hadoop执行的时候,这个位置是相对的hadoop集群的位置,而不是你的主目录位置,而且,我们使用的相对路径,必须要有读写权限才行,所以,我们在把hadoop-1.2.1放入opt后,执行了sudo chown -R linukey hadoop-1.2.1这个命令,就是把这个文件夹的权限拿到手,下面我们在各个虚拟机复制主机hadoop-1.2.1的时候,也要执行,我们下面再说。
2.masters和salves里面配置的ip地址,我们要写成如下形式:u1@192.168.0.12,而不能写成:192.168.0.12,因为NameNode和DataNode节点在通信的时候,使用的是ssh通信的,如果写成192.168.0.12的话,那在启动hdfs的时候,hadoop便会认成linukey@192.168.0.12,这样就错了(ps:网上的解决方案都没有提到过这一点,我不知道别人有没有遇到这种情况,但是我这里确实是这样的)

分别配置两个虚拟机的hadoop

我们上面配置完了主机的hadoop,当我们再在虚拟机上配置hadoop的时候,我们就不用再重新配置了,只要复制过主机上已经配置好的目录到虚拟机就好了,方法如下:

1.cd /opt
2.sudo scp -r linukey@192.168.0.7:/opt/hadoop-1.2.1 ./
3.sudo chown -R user hadoop-1.2.1 (这里的user对应着你虚拟机用户名称)

这样的话,我们就在各个虚拟机上配置好了hadoop,并且拿到了文件夹的权限。

启动Hadoop集群

到这里,终于完成了Hadoop集群的配置,下面,我们来启动一下,看看是否已经配置成功。

  1. 进入主机节点
  2. hadoop namenode -format
  3. start-dfs.sh
  4. start-mapred.sh
  5. jps
    执行完jps后,如果显示下面几个节点,就说明主机已经启动成功了:

6.进入各虚拟机
7.jps

如果显示以下几个进程,就说明启动成功了:

这里写图片描述

进入管理后台,查看集群情况

1.进入主节点
2.在浏览器输入 localhost:50070
显示如下:

这里写图片描述

使用ip别名应对ip变动情况

我们上面配置的时候,都是用的ip地址来配置的,但是一旦我们的ip地址有变动,就得重新修改,很麻烦,我们可以修改 /etc/hosts 文件,给每个ip个别名,这样,在下次ip变动的时候,我们修改这个文件就可以了,但是切记:需要修改主机和所有虚拟机的hosts文件,并且相应ip和别名必须一样。

总结

好了,到目前为止,我们已经搭建好了Hadoop-1.2.1集群框架。

转载请注明地址:http://blog.csdn.net/linukey/article/details/62870457
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linukey/article/details/62870457
文章标签: hadoop 分布式
个人分类: Hadoop
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭