1. 基本环境

1.1 操作系统

操作系统:CentOS7.3

1.2 三台虚拟机

172.20.20.100  master

172.20.20.101  slave1

172.20.20.102  slave2

1.3 软件包

jdk-8u121-linux-x64.gz

hadoop-2.8.4.tar.gz

2. 环境配置

2.1 新建hadoop用户

useradd hadoop

通过passwd命令修改hadoop用户密码,启用hadoop用户。

passwd hadoop

2.2 配置ssh免密码登录

root和hadoop用户都进行ssh配置以方便主机间操作

详细配置参考另外一篇文章:ssh多台主机实现互相认证

2.3 修改hosts文件

需要在root用户下操作,hadoop用户没有修改权限

修改master主机hosts文件

vi /etc/hosts

添加以下内容:

172.20.20.100 master
172.20.20.101 slave1
172.20.20.102 slave2

2.4 同步hosts文件到其他主机

需要在root用户下操作,hadoop用户没有修改权限

2.1 步骤已经实现了ssh无密码登录,通过scp命令拷贝master主机hosts文件到slave1、slave2主机。

2.5 关闭主机防火墙

每台主机均需操作

# 关闭防火墙
systemctl stop firewalls.service #禁止防火墙开机启动
systemctl disable firewalls.service

2.6 关闭 selinux

每台主机均需操作

setenforce 
vi /etc/sysconfig/selinux

修改 SELINUX 值为disabled

getenforce 命令查看 selinux状态为disabled

2.7 安装Java JDK

(1)oracle官网下载 jdk-8u121-linux-x64.gz,版本可以根据自己情况做调整。

(2)解压 jdk-8u121-linux-x64.gz 到 /opt/java 目录下。

(3)配置 jdk环境变量。修改/etc/profile 文件,追加以下内容:

#Java
export JAVA_HOME=/opt/java/jdk1..0_121
export PATH=$PATH:${JAVA_HOME}/bin
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

修改完毕后,执行 source /etc/profile,通过 java -version 命令查看是否安装成功。

(4)在每台机器上都安装jdk(也可同通过scp命令拷贝/etc/profile 和 /opt/java 实现),hadoop集群要求每台运行主机必须安装jdk。

3. Hadoop 安装

3.1 服务器功能规划

master  slave1 slave2
NameNode ResourceManage  
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer   SecondaryNameNode

3.2 在master主机上安装hadoop

注意:切换到hadoop用户

(1) 解压hadoop-2.8.4.tar.gz至 /opt目录下

tar -zxvf hadoop-2.8..tar.gz

(2)  配置Hadoop JDK路径

修改 hadoop 解压缩后 etc目录下 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路径

export JAVA_HOME=/opt/java/jdk1..0_121

(3) 配置core-site.xml

<configuration>
 <!-- 指定NameNode主机和hdfs端口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
 <!-- 指定tmp文件夹路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/tmp</value>
</property>
</configuration>

fs.defaultFS 为 NameNode 的地址,hadoop.tmp.dir 为hadoop临时目录的地址,默认情况下,NameNode和DataNode的数据文件都会存在这个目录下的对应子目录下。应该保证此目录是存在的,如果不存在,先创建。

(4) 配置hdfs-site.xml

<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/dfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/dfs/datanode</value>
</property>

dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将slave2规划为SecondaryNameNode服务器。所以这里设置为:slave2:50090;dfs.namenode.name.dir 指定 NameNode 数据存放路径;dfs.datanode.data.dir 指定 DataNode 数据存放路径;注意,要提前创建好/home/hadoop/data/dfs 文件夹。

(5) 配置slaves

修改hadoop etc目录下slaves文件

vi slaves

修改其内容为:

master
slave1
slave2

slaves文件是指定HDFS DataNode 工作节点。

(6) 配置 yarn-site.xml

vi yarn-site.xml

添加以下属性:

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>

根据规划yarn.resourcemanager.hostname这个指定resourcemanager服务器指向slave1。

yarn.log-aggregation-enable是配置是否启用日志聚集功能。

yarn.log-aggregation.retain-seconds是配置聚集的日志在HDFS上最多保存多长时间。

(7) 配置mapred-site.xml

从mapred-site.xml.template复制一个mapred-site.xml文件。

<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>

mapreduce.framework.name设置mapreduce任务运行在yarn上。

mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在master机器上。

mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号。

(8) 分发Hadoop文件

master主机hadoop解压目录为 /opt/software,在slave1和slave2 分别新建目录 /opt/software

mkdir /opt/software

然后通过scp分发hadoop安装文件。

scp -r /opt/software/hadoop-2.8. slave1:/opt/software/
scp -r /opt/software/hadoop-2.8. slave2:/opt/software/

(9) 配置Hadoop 环境变量

su root
vi /etc/profile

添加如下配置:

#hadoop
export HADOOP_HOME=/opt/software/hadoop-2.8.
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

修改完成,保存后执行 source /etc/profile 命令,然后scp命令,拷贝/etc/profile 文件至 slave1和 slave2 主机。

scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile

同样在slave1和slave2 主机上执行 source /etc/profile 重新加载配置信息。

(10) NameNode 格式化

在NameNode机器上执行格式化

$HADOOP_HOME/bin/hdfs namenode –format

注意:

如果需要重新格式化NameNode,需要先将原来NameNode和DataNode下的文件全部删除,不然会报错,NameNode和DataNode所在目录是在hdfs-site.xmlhadoop.tmp.dirdfs.namenode.name.dirdfs.datanode.data.dir属性配置的。

<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/dfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/dfs/datanode</value>
</property>

因为每次格式化,默认是创建一个集群ID,并写入NameNode和DataNode的VERSION文件中(VERSION文件所在目录为dfs/name/current 和 dfs/data/current),重新格式化时,默认会生成一个新的集群ID,如果不删除原来的目录,会导致NameNode中的VERSION文件中是新的集群ID,而DataNode中是旧的集群ID,不一致时会报错。

另一种方法是格式化时指定集群ID参数,指定为旧的集群ID。

4.  启动集群

4.1  启动HDFS

[hadoop@master ~]$ $HADOOP_HOME/sbin/start-dfs.sh

jps 命令查看进程启动情况,能看到master主机启动了 NameNode 和 DataNode进程。

从启动输出信息可以看出NameNode、DataNode和 SecondaryNameNode 启动情况。

4.2  启动YARN

ssh连接到slave1主机,ResourceManager 服务运行主机。

ssh slave1
$HADOOP_HOME/sbin/start-yarn.sh

jps命令,查看slave1主机运行进程。

注意,如果不在ResourceManager主机上运行 $HADOOP_HOME/sbin/start-yarn.sh 命令的话,ResourceManager 进程将不会启动,需要到 ResourceManager 主机上执行yarn-daemon.sh start resourcemanager 命令来启动ResourceManager进程。

$HADOOP_HOME/sbin/yarn-daemon.sh start resourcemanager

4.3 启动日志服务器

因为我们规划的是在master服务器上运行MapReduce日志服务,所以要在slave2上启动。

[hadoop@master ~]$ $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver

4.4 查看HDFS Web页面

地址为 NameNode 进程运行主机ip,端口为50070,http://172.20.20.100:50070 。

4.5 查看YARN Web页面

地址为ResourceManager 进程运行主机,http://172.20.20.101:8088

4.6 查看JobHistory Web 页面

地址为JobHistoryServer 进程运行主机ip,端口为19888,通过配置文件查看自己的JobHistory web端口,http://172.20.20.100:19888

至此,已经完成Hadoop 分布式安装。

5. 测试Job

5.1  准备mapreduce输入文件wc.input

[hadoop@master ~]$ cat wc.input
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop

5.2 在HDFS创建输入目录input

[hadoop@master ~]$ $HADOOP_HOME/bin/hdfs dfs -mkdir input

5.3 将wc.input 上传到HDFS

[hadoop@master ~]$ $HADOOP_HOME/bin/hdfs dfs -put wc.input /input

5.4 运行hadoop自带的mapreduce Demo

[hadoop@master ~]$ yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8..jar wordcount /input/wc.input /output

因为/etc/profile文件中已配置过hadoop环境变量,所以可以直接运行yarn命令,如下所示为执行结果。

5.5 查看输出文件

[hadoop@master ~]$ hdfs dfs -ls /output/

[hadoop@master ~]$ hdfs dfs -cat /output/part-r-

CentOS7 分布式安装 Hadoop 2.8的更多相关文章

  1. 指导手册02:伪分布式安装Hadoop(ubuntuLinux)

    指导手册02:伪分布式安装Hadoop(ubuntuLinux)   Part 1:安装及配置虚拟机 1.安装Linux. 1.安装Ubuntu1604 64位系统 2.设置语言,能输入中文 3.创建 ...

  2. 第二章 伪分布式安装hadoop hbase

    安装单机模式的hadoop无须配置,在这种方式下,hadoop被认为是一个单独的java进程,这种方式经常用来调试.所以我们讲下伪分布式安装hadoop. 我们继续上一章继续讲解,安装完先试试SSH装 ...

  3. 伪分布式安装Hadoop

    Hadoop简单介绍 Hadoop:适合大数据分布式存储与计算的平台. Hadoop两大核心项目: 1.HDFS:Hadoop分布式文件系统 HDFS的架构: 主从结构: 主节点,只有一个:namen ...

  4. Hadoop(一) centos7 jdk安装,hadoop安装|3

    安装JDK 下载jdk https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选择最 ...

  5. CentOS7.0分布式安装HADOOP 2.6.0笔记-转载的

    三台虚拟机,IP地址通过路由器静态DHCP分配 (这样就无需设置host了). 三台机器信息如下 -      1. hadoop-a: 192.168.0.20  #master     2. ha ...

  6. 完全分布式安装hadoop集群

    0.安装jdk 1.配置hosts文件 2.建立hadoop运行账号 3.配置ssh免密码登录 4.在namenode上配置hadoop 4.1.修改hadoop-env.sh文件 4.2.修改yar ...

  7. CentOS 6.5 伪分布式 安装 hadoop 2.6.0

    安装 jdk -openjdk* 检查安装:java -version 创建Hadoop用户,设置Hadoop用户使之可以免密码ssh到localhost su - hadoop ssh-keygen ...

  8. 完全分布式安装hadoop

    以三个节点为例的服务器集群来安装和配置hadoop 以下是各服务器ip地址和对应所做的节点 192.168.61.128 master 192.168.61.129 slave1 192.168.61 ...

  9. 在centos7上安装hadoop

    1.使用hadoop是需要jdk环境的,因为hadoop里面有java程序,而运行java程序需要jdk. 2.从宿主机上传文件到虚拟机有很多方法,我选择的是在虚拟机安装lrzsz,安装lrzsz命令 ...

随机推荐

  1. Dubbo 分布式事务一致性实现

    我觉得事务的管理不应该属于Dubbo框架, Dubbo只需实现可被事务管理即可, 像JDBC和JMS都是可被事务管理的分布式资源, Dubbo只要实现相同的可被事务管理的行为,比如可以回滚, 其它事务 ...

  2. JS中的特殊类别注意区分

    undefined和null 在JavaScript中存在这样两种原始类型:Null与Undefined. 这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是 ...

  3. [Swift]LeetCode144. 二叉树的前序遍历 | Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. Example: Input: [1,null,2,3 ...

  4. [Swift]LeetCode251.展平二维向量 $ Flatten 2D Vector

    Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...

  5. [Swift]LeetCode448. 找到所有数组中消失的数字 | Find All Numbers Disappeared in an Array

    Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and ot ...

  6. [Swift]LeetCode696. 计数二进制子串 | Count Binary Substrings

    Give a string s, count the number of non-empty (contiguous) substrings that have the same number of ...

  7. python-正则表达式练习

    1.匹配普通URL ^(http://)([a-z]+)\.([a-z]+)\.(com|cn|net|edu)(/(\w)+)+(.+) 2.匹配type返回的字符串中的类型 import re r ...

  8. javascript时间戳与日期格式之间的互转

    1. 将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了 ...

  9. Xcode 命令行工具 Command Line Tools

    xcode命令行工具包是一个小型独立包,可供下载独立于Xcode的和允许您执行命令行开发OS X. 在OS X10.9,就以及没有clt的下载安装包了,需要使用命令在线安装. xcode-select ...

  10. 死磕 java集合之TreeMap源码分析(四)-内含彩蛋

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. 二叉树的遍历 我们知道二叉查找树的遍历有前序遍历.中序遍历.后序遍历. (1)前序遍历,先遍历 ...