如何安装Hadoop 2.6.0完全分布式?

来源:互联网 发布:数据库应用系统饭店 编辑:程序博客网 时间:2024/06/09 17:35

欢迎访问 博客新址

本教程是关于如何在Ubuntu中搭建完全分布式Hadoop2.6.*环境的完整教程。

一、环境说明

  • 操作系统:Ubuntu 14.04
    注:其它版本的Ubuntu安装过程一样
  • 虚拟机:VMware Workstation或VirtualBox
    注:VMware Workstation的功能更强大,但是软件体积也比较大;而且在Ubuntu中我没有安装成功。VirtualBox软件体积小,更加灵活好用,而且可以跨平台使用。但是VirtualBox有些功能不支持,比如Linux版本的VirtualBox不支持文件拖拽和共享粘贴板功能。另外,Ubuntu版VirtualBox5.1存在问题,安装增强工具包之后无法启动。建议安装VirtualBox5.0。
  • JDK:Java 1.8
  • 集群节点:2个(master, slave1)

二、安装虚拟机

  • 此处考虑到跨平台的因素,选择使用VirtualBox
  • 存在两种安装方式,下载deb包和添加路径,使用apt-get命令安装。
  • 请点击下面的链接自行安装
    参考:
    Ubuntu15.04系统安装Virtualbox虚拟机

三、准备工作

安装Java

下载JDK

  • JDK下载地址:官网下载地址,点此下载

安装JDK

  • 安装方法很简单,简单的说就2步:
    • 第一步:解压,并复制文件到指定路径。如/usr/local/jdk
    • 第二部:添加路径,修改配置文件。如修改/etc/profile~/.bashrc
  • 参考:Ubuntu下搭建JAVA开发环境

创建hadoop账号

  • 注:不一定非得创建hadoop账号,这一项可选。
  • 但是,对于新手来说,最好创建hadoop账号,并且为它添加超级用户权限。
  • 后面的操作都在hadoop账号下进行。
  • 参考:Linux命令——adduser
  • 添加超级用户权限。使用命令sudo visudo修改sudoers文件,添加一行。如下图所示。
    这里写图片描述

复制虚拟机

  • 网上教程很多,自己搜索。
  • 现在有2台虚拟机,一台做NameNode,另一台做DataNode。

四、修改配置文件

设置静态IP地址

  • 因为Hadoop集群中的不同节点之间是基于TCP/IP进行通信的。如果使用DHCP方式动态分配IP,就无法定位到网络中的节点。所以,此处使用静态IP。
  • 设置过程:
    1. 查看本机IP网段。比如我的网址是192.168.36.15,局域网的网段是:192.168.36.0~192.168.36.255
    2. 设置虚拟机的网络连接方式为桥接网卡。如下图所示。
    3. 修改配置文件。修改/etc/network/interfaces文件。
    4. 重启计算机,使配置生效。
  • 网络连接方式图如下所示。
    这里写图片描述

  • 第一台虚拟机的/etc/network/interfaces文件内容如下所示:

    auto eth0#iface eth0 inet dhcpiface eth0 inet staticaddress 192.168.36.100gateway 192.168.36.254netmask 255.255.255.0iface eth0 inet6 auto
  • 第二台虚拟机的/etc/network/interfaces文件内容如下所示:

    auto eth0#iface eth0 inet dhcpiface eth0 inet staticaddress 192.168.36.101gateway 192.168.36.254netmask 255.255.255.0iface eth0 inet6 auto
  • 注意:因为我们学校有IPv6网络,因此也配置了inet6,如果没有的话可以忽略这一项。

修改hostname

  • Hadoop集群中的各个节点通过主机名互相通信,同时为了好区分主节点和数据节点。此处需要重新设置主机名。
  • 将第一台虚拟机的主机名设置为master,第一台虚拟机的主机名设置为slave1
  • 使用下面的命令设置。

    sudo vi /etc/hostname
  • 第一台虚拟机的/etc/hostname内容是:

    master
  • 第二台虚拟机的/etc/hostname内容是:

    slave1
  • 重启计算机,使用命令hostname确认是否修改成功。

修改hosts文件

  • 修改命令:sudo vi /etc/hosts
  • 在master和slave1主机的/etc/hosts文件中添加如下内容:

    192.168.36.100  master192.168.36.101  slave1
  • 重启计算机,测试是否成功。

    ping masterping slave1

配置ssh免密码登录

  • master 和 slave1共同操作

    # 如果没有ssh,先安装sudo apt-get install openssh-server# 生成密匙(不断按回车键,默认即可)ssh-keygen -t rsa
  • 在~/.ssh/下生成了两个文件id_rsa,id_rsa.pub。第一个是私匙,第二个是公匙。
  • 在slave1中的操作

    scp id_rsa.pub hadoop@192.168.36.100:~/.ssh/id_rsa.pub_slave1
  • 在master中的操作

    # 将公匙都存储到authorized_keys文件中cat id_rsa.pub >> authorized_keyscat id_rsa.pub_slave1 >> authorized_keys# 将authorized_keys文件分发到slave1中scp authorized_keys hadoop@192.168.36.101:~/.ssh/
  • 测试是否成功

    # master中测试ssh slave1# slave1中测试ssh master

五、安装hadoop

  • 注:如未其它说明,以下操作都是在master节点上进行的。
  • 原来教程将Hadoop安装在/usr/local/目录下,但是后面会遇到问题:无法启动NameNode或DataNode。这种问题归根结底都是由于权限造成的。所以,我修改了教程,将Hadoop安装在hadoop用户自己目录下:/home/hadoop/software/

下载安装包

  • 下载地址:通用地址 or Hadoop 2.6.0下载地址
  • 注意:下载二进制版本就可以,不要下载源码。
  • 如果是在主机上下载的,请使用Xftp等其他工具将其上传到客户机master和slave1中。
  • 假定hadoop存储位置:~/hadoop-2.6.0.tar.gz

解压拷贝文件

  • 先解压,然后重命名,再复制到指定目录,最后创建tmp目录。

    # 解压tar -zxvf hadoop-2.6.0.tar.gz# 重命名mv hadoop-2.6.0 hadoop# 移动(我安装在/usr/local/下)sudo mv hadoop ~/software/# 创建tmp目录,后面会用到cd ~/software/hadoopmkdir -p tmp/dfs/datamkdir -p tmp/dfs/name
  • 注意:不要安装在/usr/local目录下。防止权限问题造成后面无法启动NameNode或DataNOde问题。

修改hadoop配置文件

  • 此处需要修改7个配置文件,全部在/usr/local/hadoop/etc/hadoop/目录下。
  • 7个配置文件的名字分别是:

    hadoop-env.sh # hadoop的环境变量yarn-env.sh   # yarn的环境变量slaves        # 数据节点名字列表core-site.xml   # hdfs-site.xml   # HDFS配置文件mapred-site.xml # MapReduce配置文件yarn-site.xml   # yarn配置文件

修改hadoop-env.sh

  • 修改JAVA_HOME环境变量。在hadoop-env.sh文件中添加一行:

    export JAVA_HOME=/usr/local/jdk
  • 注意:我的JDK安装位置时/usr/local/jdk。你的不一定相同。所以,这个需要根据自己的JDK位置来设定。

修改yarn-env.sh

  • 修改JAVA_HOME环境变量。在yarn-env.sh文件中添加一行:

    export JAVA_HOME=/usr/local/jdk
  • 注意:我的JDK安装位置时/usr/local/jdk。你的不一定相同。所以,这个需要根据自己的JDK位置来设定。

配置slave节点

  • 需要修改slaves文件
  • 因为此教程只创建了两个虚拟机:master和slave1。master用作NameNode节点,slave1用作DataNode节点。所以,slaves文件仅需要添加slave1即可
  • 在slaves文件中添加一行:

    slave1

配置core-site.xml

  • 在core-site.xml文件中增加以下内容:

    <configuration>    <property>        <name>hadoop.tmp.dir</name>        <value>file:/home/hadoop/software/hadoop/tmp</value>        <description>Abase for other temporary directories.</description>    </property>    <property>        <name>fs.defaultFS</name>        <value>hdfs://master:9000</value>    </property></configuration>
  • 注意:hadoop.tmp.dir的值需要和前面创建的tmp路径对应。

配置hdfs-site.xml

  • 在hdfs-site.xml文件中增加以下内容:

    <configuration>    <property>        <name>dfs.namenode.secondary.http-address</name>        <value>master:9001</value>    </property>    <property>        <name>dfs.replication</name>        <value>2</value>    </property>    <property>        <name>dfs.namenode.name.dir</name>        <value>file:/home/hadoop/software/hadoop/tmp/dfs/name</value>    </property>    <property>        <name>dfs.datanode.data.dir</name>        <value>file:/home/hadoop/software/hadoop/tmp/dfs/data</value>    </property>    <property>             <name>dfs.permissions</name>              <value>false</value>       </property>    <property>        <name>dfs.webhdfs.enabled</name>        <value>true</value>    </property></configuration>

配置mapred-site.xml

  • 在mapred-site.xml文件中增加以下内容:

    <configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property>    <property>        <name>mapreduce.jobhistory.address</name>        <value>master:10020</value>    </property>    <property>        <name>mapreduce.jobhistory.webapp.address</name>        <value>master:19888</value>    </property></configuration> 

配置yarn-site.xml

  • 在yarn-site.xml文件中增加以下内容:

    <configuration>    <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.hostname</name>          <value>master</value>      </property>     <property>        <name>yarn.resourcemanager.address</name>        <value>master:8032</value>    </property>    <property>        <name>yarn.resourcemanager.scheduler.address</name>        <value>master:8030</value>    </property>    <property>        <name>yarn.resourcemanager.resource-tracker.address</name>        <value>master:8035</value>    </property>    <property>        <name>yarn.resourcemanager.admin.address</name>        <value>master:8033</value>    </property>    <property>        <name>yarn.resourcemanager.webapp.address</name>        <value>master:8088</value>    </property><property>      <name>yarn.resourcemanager.webapp.https.address</name>      <value>${yarn.resourcemanager.hostname}:8090</value>  </property></configuration>

复制修改后的hadoop文件夹到其它节点

  • 注意:因为/usr/local为系统目录,所以先复制到slave1中hadoop的Home路径,再复制到/usr/local/下。

    # 从master传输到slave1中scp -r /home/hadoop/software/hadoop hadoop@slave1:~/software/

修改配置文件profile或.bashrc

  • 注意:此操作在master和slave1中都要进行。
  • 修改/etc/profile文件,对所有用户生效;修改~/.bashrc文件,仅对自己有效。
  • .bashrc中添加如下内容:

    # added by xuezhi zhangPS1='[\[\e[33;40m\]\u@\w]\$\[\e[m\]'# javaexport JAVA_HOME=/usr/local/jdkexport JRE_HOME=/usr/local/jdk/jreexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=.:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH# Hadoop enviroment var.export HADOOP_INSTALL=/home/hadoop/software/hadoopexport PATH=$PATH:$HADOOP_INSTALL/binexport PATH=$PATH:$HADOOP_INSTALL/sbinexport HADOOP_MAPRED_HOME=$HADOOP_INSTALLexport HADOOP_COMMON_HOME=$HADOOP_INSTALLexport HADOOP_HDFS_HOME=$HADOOP_INSTALLexport YARN_HOME=$HADOOP_INSTALLexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
  • 使配置生效

    source ~/.bashrc
  • 至此,Hadoop已经配置完成了。

六、测试hadoop

  • 下面开始测试一下hadoop

开启hadoop

  • 注意:在master节点上操作

    # 格式化HDFShdfs namenode -format# 启动HDFSstart-dfs.sh# 查看Java进程jps# 启动Yarnstart-yarn.shjps# 查看集群状态hdfs dfsadmin -report# 或者访问:http://master:8088/

关闭hadoop

  • 注意:在master节点上操作

    # 关闭HDFSstop-dfs.sh# 查看Java进程jps# 关闭Yarnstop-yarn.shjps
  • 至此,整个教程已完,谢谢阅读!

1 0