Hadoop集群安装--Ubuntu

我家宝最近在自学Hadoop,于是乎跟着一起玩玩,在此为她整理一篇基础搭建的博客,希望对她能有所帮助。同样,开始之前先来了解下,什么是Hadoop。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。它是根据Google公司发表的MapReduceGoogle文件系统的论文自行实现而成。Hadoop框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce的编程范式:应用程序被分区成许多小部分,而每个部分都能在集群中的任意节点上运行或重新运行。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

搭建

搭建集群的话,需要最少两台机器来搭建一个多节点的Hadoop环境,我这里使用Hadoop最新稳定的2.7.3版本和三台云主机(1主两从,Ubuntu1404 LTS)。

  1. 修改hosts文件

保证三台机器的网络是可达的前提下,更改主机名,并修改hosts文件:

# hostnamectl  set-hostname master   // 在master节点上执行
# hostnamectl  set-hostname slave-1  // 在slave-1节点上执行
# hostnamectl  set-hostname slave-2  // 在slave-2节点上执行
分别把三台机器的hosts文件进行修改:
# vim /etc/hosts
192.168.1.2  master
192.168.1.3  slave-1
192.168.1.4  slave-2

2.在master和slave节点上安装java:

# add-apt-repository ppa:webupd8team/java  //添加ppa
# apt-get update
# apt-get installoracle-java8-installer 
# java -version  //检验Java版本
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

3.禁用IPv6

现在Hadoop目前对IPv6不是很好,在一些Linux发行版上可能造成一些未知bug。在Hadoop Wiki上提供了方法来禁用,我这里修改sysctl.conf文件,添加以下几行:

# vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# sysctl -p  //使其立即生效

4.创建Hadoop User

在master和slave节点上执行:

# addgroup hdgroup  //创建hadoop group
# adduser —ingroup hdgroup hduser  //创建Hadoop User并加入Hadoop group
Adding user `hduser‘ ...
Adding new user `hduser‘ (1001) with group `hdgroup‘ ...
Creating home directory `/home/hduser‘ ...
Copying files from `/etc/skel‘ ...
Enter new UNIX password:            //输入密码之后一路回车即可
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for hduser
Enter the new value, or press ENTER for the default
       	Full Name []:
       	Room Number []:
       	Work Phone []:
       	Home Phone []:
       	Other []:
Is the information correct? [Y/n]

Hadoop要求无密码登录,所以需要生成秘钥,这里注意要用刚才创建的普通hduser用户,分别在master和slave上执行如下操作:

# su - hduser
$ ssh-keygen -N ‘‘
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hduser/.ssh/id_rsa):
Created directory ‘/home/hduser/.ssh‘.
Your identification has been saved in /home/hduser/.ssh/id_rsa.
Your public key has been saved in /home/hduser/.ssh/id_rsa.pub.
The key fingerprint is:
5b:ae:c6:5a:ce:66:51:d3:6c:6c:14:9b:b2:8a:da:e9 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|            ..   |
|            .o   |
|          .=o    |
|          oo*    |
|        S.o+     |
|       ..=       |
|      ..+..      |
|     o ==.       |
|    ..E=+        |
+-----------------+
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]

5.下载和安装Hadoop

登录Hadoop的官方下载地址,选择你需要的版本,复制下载链接,这里我选用最新的2.7.3版本:

打开链接之后,右键复制链接地址:

在master和slave上分别执行(你也可以在一台机器上下载完之后拷贝到另外两台上):

$ cd /home/hduser
$ wget -c 
$ tar -zxvf hadoop-2.7.3.tar.gz
$ mv hadoop-2.7.3 hadoop

6.更改环境变量

首先确定之前安装的java home目录,查找办法如下(在任意一台机器上执行):

[email protected]:~$ env | grep -i java
JAVA_HOME=/usr/lib/jvm/java-8-oracle

分别在master和slave节点上执行以下操作,编辑".bashrc"文件,添加如下几行:

$ vim .bashrc   //编辑文件,添加如下几行
export HADOOP_HOME=/home/hduser/hadoop
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
$ source  .bashrc   //source使其立即生效

分别在master和slave节点上执行以下操作,更改Hadoop-env的JAVA_HOME:

$ vim /home/hduser/hadoop/etc/hadoop/hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME}   //更改此行,或者注释掉新加以下一行
export JAVA_HOME=/usr/lib/jvm/java-8-oracle

7.Hadoop配置

Hadoop的配置这里主要涉及四个配置文件:etc/hadoop/core-site.xml,etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml.

这里摘录网络上的一段话,在继续下面的操作之前一定要阅读这段,以便更好的理解:

  • Hadoop Distributed File System: A distributed file system that provides high-throughput access to application data. A HDFS cluster primarily consists of a NameNode that manages the file system metadata and DataNodes that store the actual data. If you compare HDFS to a traditional storage structures ( e.g. FAT, NTFS), then NameNode is analogous to a Directory Node structure, and DataNode is analogous to actual file storage blocks.
  • Hadoop YARN: A framework for job scheduling and cluster resource management.
  • Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

①在master和slave节点上更改"core-site.xml"文件,master和slave节点应该使用相同"fs.defaultFS"值,而且必须指向master节点;在“configuration”中间添加如下配置:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hduser/tmp</value>
  <description>Temporary Directory.</description>
</property>

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://master:54310</value>
  <description>Use HDFS as file storage engine</description>
</property>

最终core-site.xml配置文件如下图所示:

如果tmp目录不存在,需要手动创建一个:

$ mkdir /home/hduser/tmp
$ chown -R hduser:hdgroup /home/hduser/tmp //非hduser用户创建虚赋权

②只在master节点上更改"mapred-site.xml"文件,由于没有这个文件,需要需要复制那个template文件生成一个:

$ cd /home/hduser/hadoop/
$ cp -av etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

编辑xml配置文件,在“configuration”中间添加如下配置:

<property>
 <name>mapreduce.jobtracker.address</name>
 <value>master:54311</value>
 <description>The host and port that the MapReduce job tracker runs
  at. If “local”, then jobs are run in-process as a single map
  and reduce task.
</description>
</property>
<property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 <description>The framework for running mapreduce jobs</description>
</property>

③在master和slave节点上更改"hdfs-site.xml"文件,在“configuration”中间添加如下配置:

<property>
 <name>dfs.replication</name>
 <value>2</value>
 <description>Default block replication.
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
 </description>
</property>
<property>
 <name>dfs.namenode.name.dir</name>
 <value>/data/hduser/hdfs/namenode</value>
 <description>Determines where on the local filesystem the DFS name node should store the name table(fsimage). If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.
 </description>
</property>
<property>
 <name>dfs.datanode.data.dir</name>
 <value>/data/hduser/hdfs/datanode</value>
 <description>Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.
 </description>

并创建刚才配置文件中指定的目录:

$ mkdir -p /home/hduser/data/hduser/hdfs/{namenode,datanode}
$ chown -R hduser:hdgroup /home/hduser/data/  //如果非hduser用户创建的需要赋权

1).这里dfs.replication的默认值为3,这里我设置了2个副本,代表每个存储到HDFS的文件都有额外一个副本,这里的值可以视集群规模而定。

2)dfs.namenode.name.dir和dfs.datanode.name.dir是namenode和datanode存放HDFS数据块文件的位置,如果没有需要手动创建

④在master和slave节点上更改"yarn-site.xml"文件,master和slave节点应该使用相同的值,并且指向master节点。在“configuration”中间添加如下配置:

<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>
<property>
 <name>yarn.resourcemanager.scheduler.address</name>
 <value>master:8030</value>
</property>
<property>
 <name>yarn.resourcemanager.address</name>
 <value>master:8032</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>master:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>master:8031</value>
</property>
<property>
  <name>yarn.resourcemanager.admin.address</name>
  <value>master:8033</value>
</property>

⑤更新slave文件

在master节点上修改slave文件,添加master和slave节点的主机名或者ip地址,并去掉"localhost":

$ vim /home/hduser/hadoop/etc/hadoop/slaves
master
slave-1
slave-2

⑥格式化namenode:

在启动cluster之前需要先格式化namenode,在master上执行:

$ hdfs namenode -format

看到类似提示INFO:"Storage directory /home/hduser/data/hduser/hdfs/namenode has been successfully formatted."表示格式化成功。

⑦启动服务

可以直接使用Hadoop提供的脚本"start-all.sh"启动所有服务,也可以把dfs和yarn分别启动。可以使用绝对路径:/home/hduser/hadoop/sbin/start-all.sh,也可以直接调用start-all.sh脚本(因为前面已经改过PATH的路径):

$ start-all.sh

如下图所示没有看到任何错误信息,表示集群已成功启动:

⑧验证查看

使用jps命令分别在master和slave上查看启动的服务

网页验证:

浏览器打开:http://master:50070

查看yarn web console: http://master:8088/cluster/nodes

如果所有node均正常启动,这里能够全部显示:

Hadoop解压的share目录里给我们提供了几个example的jar包,我们执行一个看下效果:

$ hadoop jar /home/hduser/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  pi 30 100

执行之后通过浏览器访问:http://master:8088/cluster/apps

能够看到当前执行的任务:

写在最后:

  1. 如果在新增了节点或者删除节点的时候出现了问题,首先删除slave的hadoop.tmp.dir,然后重新启动试试看,如果还是不行,尝试把Master的hadoop.tmp.dir删除(意味着dfs上的数据也会丢失)然后需要重新namenode –format。
  2. 如果有任何报错信息记得去查log日志,文件位置在Hadoop的安装目录logs文件夹下。
时间: 2024-08-06 07:51:34

Hadoop集群安装--Ubuntu的相关文章

Spark教程-构建Spark集群-安装Ubuntu系统(1)

Unbuntu系统是我们开发Hadoop时最常用的操作系统,下面带领大家一步步完成Vmware虚拟机下Unbuntu系统的安装 创建Vmware中的虚拟系统: 我们选择的是“Typical”的方式,点击“Next”进入下一步: 选择稍后安装操作系统,点击“Next”进入下一步: 选择安装Linux系统的Ubuntu版本,点击“Next”进入下一步: 家林这里选择了自定义系统的存放路径为“E:\VMware\Virtual Machines\Master” 如下图所示: 点击“Next”进入下一步

Apache Hadoop集群安装(NameNode HA + SPARK + 机架感知)

1.主机规划 序号 主机名 IP地址 角色 1 nn-1 192.168.9.21 NameNode.mr-jobhistory.zookeeper.JournalNode 2 nn-2 192.168.9.22 Secondary NameNode.JournalNode 3 dn-1 192.168.9.23 DataNode.JournalNode.zookeeper.ResourceManager.NodeManager 4 dn-2 192.168.9.24 DataNode.zook

Hadoop集群安装配置文档

Hadoop集群安装配置文档 日期 内容 修订人 2015.6.3 文档初始化 易新             目录 1 文档概要... 5 1.1软件版本... 5 1.2机器配置... 5 2 虚拟机配置... 5 2.1新建虚拟机... 5 2.2虚拟网络配置... 8 3 CentOS安装及配置... 9 3.1系统安装... 9 3.2系统配置... 10 3.2.1防火墙配置... 10 3.2.2 SElinux配置... 10 3.2.3 IP配置... 11 3.2.4安装vim

Spark教程-构建Spark集群-安装Ubuntu系统(2)

3.点击“Finish”完成虚拟系统的创建,如下图所示: 点击我们创建的Ubuntu,如下所示 点击“CD/DVD(IDE)”进入如下界面 选择我们的Ubuntu的ISO的具体存放路径,选择好后如下图所示: 点击“OK”完成设置: 点击“Memory”,进入如下界面: 此时把我们虚拟的内存设置为2G,如下所示: 点击“OK”完成设置. Spark教程-构建Spark集群-安装Ubuntu系统(2)

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS

摘自:http://www.powerxing.com/install-hadoop-cluster/ 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否则请先查看Hadoop安装教程_单机/伪分布式配置 或 CentOS安装Hadoop_单机/伪分布式配置. 本教程适合于原生 Hadoop 2,包括 Hadoop 2.6.0, Hadoop 2.7.1 等版本,主要参考了官方安装教程,步骤详细,辅以适当说明,保证按照步骤来,都能顺利安装并运行 Ha

Hadoop集群安装-CDH5(5台服务器集群)

CDH5包下载:http://archive.cloudera.com/cdh5/ 架构设计: 主机规划: IP Host 部署模块 进程 192.168.254.151 Hadoop-NN-01 NameNode ResourceManager NameNode DFSZKFailoverController ResourceManager 192.168.254.152 Hadoop-NN-02 NameNode ResourceManager NameNode DFSZKFailoverC

基于Cloudera Manager 5和CDH5(版本5.3.3)的Hadoop集群安装

一.Cloudera Manager/CDH5 1.关于cloudera manager和CDH是什么,这里不做详细介绍了.有官网和百科介绍. 附上官网地址:cloudera manager 2.官网的安装指南 官方文档提供了三种安装方式:在线自动安装/手动安装包安装/手动使用cloudera manager管理安装 此处使用第三种方式安装hadoop集群. 二.环境规划 1.系统:CentOS 6.4_x86 master:4G内存,硬盘尽量大容量 slave1:2G内存,硬盘尽量大容量 sl

hadoop集群安装

环境: centos6 32位 hadoop2.8.4 jdk1.8(此版本运行hadoop时会警告可无视)hadoop用户(非root普通用户) 主机ip:10.10.10.10 slave主机ip:20.20.20.20 请务牢记上述环境!!! 另外除非表明使用root用户外,皆用hadoop用户执行命令 hadoop2.x与1.x结构上发生了一些变化 搭建共6步 1.配置java环境 2.配置master主机与各slave主机的ssh通信 3.下载.解压hadoop压缩包,并配置hadoo

Hadoop 集群安装(主节点安装)

1.下载安装包及测试文档 切换目录到/tmp view plain copy cd /tmp 下载Hadoop安装包 view plain copy wget http://192.168.1.100:60000/hadoop-2.6.0-cdh5.4.5.tar.gz 下载JDK安装包 view plain copy wget http://192.168.1.100:60000/jdk-7u75-linux-x64.tar.gz 下载实验测试数据 view plain copy wget h