【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装

一、前言

hadoop 在分布式计算,大数据领域一直享有盛名,也零零碎碎看过一些 hadoop 相关的东西,但却没有真正实战过,一是工作还暂时未涉及到 hadoop ,二是安装 hadoop 集群没有那个硬件基础。

现在换了一个内存大点的电脑,不能浪费这个资源,于是便来搭个 hadoop 集群吧。

二、hadoop 集群环境

这里准备3个虚拟机节点。

我是用 VMware10 虚拟了一个 Ubuntu16.04 环境,然后再克隆两个 Ubuntu16.04 节点环境。

因为是在同一台机器上搭建 hadoop 集群,所以虚拟机网络设置是NAT模式。(Vmware虚拟机三种网络模式详解

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

三个节点准备好,通过 ifconfig 命令查看 ip , 三个节点的 ip 分别为:

192.168.184.131
192.168.184.133
192.168.184.134

这里打算 131 当作 master 节点,用于运行hadoop程序中的namenode、secondorynamenode和jobtracker任务。 133 和 134 当作 slave 节点,主要将运行hadoop程序中的datanode和tasktracker任务。

在准备好这3个结点之后,分别将主机名重命名,命名主机名的方法,修改 /etc/hostname 文件:

gedit /etc/hostname

我这里对三个节点分别命名为:master, slave1, slave2。

三、搭建过程记录

在做好上述准备后,正式开始。

3.1、创建 hadoop 账户

首先创建 hadoop 账户,并配置管理员权限。

安装 Hadoop 那么需要创建一个 Hadoop 用户,毕竟创建一个新的用户,配置环境相对更加干净一些。

创建一个hadoop 用户,并使用 /bin/bash作为shell:

sudo useradd -m hadoop -s /bin/bash

设置密码:

sudo passwd hadoop

增加管理员权限:

sudo adduser hadoop sudo

三个节点都执行相同操作。

3.2、配置hosts文件

配置 hosts 文件主要用于确定每个结点的 IP 地址,方便后续 master 结点能快速查到并访问各个结点。

三个节点都需要修改,内容一致,如下:

sudo gedit /etc/hosts

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

3.3、配置ssh免密码连入

1.Hadoop 中的集群,单点模式是需要使用到SSH登录,Ubuntu默认参数了 SSH client, 还需要安装SSH Server:

sudo apt-get update
sudo apt-get install openssh-server

2.安装之后就可以使用 SSH 登录本机,生成 master 的公钥,在 master 节点终端运行:

ssh localhost # 使用此命令登录一次 (会输入一次 yes),用于生成 ~/.ssh 目录

cd ~/.ssh

ssh-keygen -t rsa # 执行此命令后一直按回车即可,会在 ~/.ssh 下生成 id_rsa 私钥文件 和 id_rsa.pub 公钥文件。

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

3.在 master 节点配置无密码 ssh 本机,这一步还是在 master 节点上运行:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 加入授权

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

4.完成此命令后,运行 ssh 验证一下

ssh localhost

此时不需密码验证。

5.让主结点(master)能通过SSH免密码登录两个子结点(slave)

前四步可以让 master ssh 本机无密码登录,还需让 master ssh 免密登录两个 slave 节点,为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息。

切换到 slave1 节点,拷贝 master 节点公钥信息:

scp hadoop@master:~/.ssh/id_rsa.pub ./master_isa.pub

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

接着在 slave1 节点上将 master 的 ssh 公匙保存到相应位置:

cat ~/.ssh/master_isa.pub >> ~/.ssh/authorized_keys

然后 切回到 master 节点:

ssh slave1

首次需要 yes 确认。

6.然后 slave2 执行同样的操作。

3.4、配置 JDK

三个节点都要安装 JDK,也可以将这步挪到前面,先装好一个节点的 JDK,然后克隆其他的节点。

具体安装参考:https://www.zybuluo.com/w1992wishes/note/1207973

安装好后,并配置相应的环境变量。

3.5、安装 hadoop

1.首先下载 hadoop 相应版本,可以到如下路径查找 hadoop 各版本:

https://archive.apache.org/dist/hadoop/common/

将下载的压缩包解压:

sudo tar -zxvf /opt/hadoop-2.7.4.tar.gz
mv hadoop-2.7.4 hadoop # 改名

2.添加 Hadoop 环境变量:

sudo gedit /etc/profile

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

保存后使配置生效:

source /etc/profile

hadoop # 查看Hadoop
hadoop version # 查看 hadoop 的安装版本

3.6、配置 hadoop 相关文件:

操作之前关闭每台机器的防火墙 sudo ufw disable。

1.编辑 hadoop-env.sh,配置 hadoop JDK 依赖:

gedit hadoop-env.sh 

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

2.配置 slaves:

gedit slaves

保存所有的 slave 节点 (slave1、slave2),将文件首行的 localhost 删除。

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

3.配置 core-site.xml:

core-site.xml 配置集群的全局参数,主要定义了系统级别的参数,如 :HDFS URL、Hadoop 的临时目录等信息。

gedit core-site.xml

<configuration> </configuration> 标签里面添加如下内容:

<property>
    <!-- 指定 HDFS 的 nameService,与(hdfs-site.xml)对应 -->
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>
<property>
    <!-- 指定 hadoop 运行时产生文件的存储路径 -->
    <name>hadoop.tmp.dir</name>
    <value>file:/opt/hadoop/hadoop_tmp</value>
    <description>Abase for other temporary directories.</description>
</property>

4.配置 hdfs-site.xml:

gedit hdfs-site.xml

<configuration> </configuration> 标签里面添加如下内容:

<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:50090</value>
</property>
<property>
    <!-- 文件的副本数,默认为 3;这里只有两台 DataNode  所以这里设置为 2 -->
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <!-- NameNode 数据目录 -->
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/hadoop/hadoop_tmp/dfs/name</value>
</property>
<property>
    <!-- DataNode 数据目录 -->
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/hadoop/hadoop_tmp/dfs/data</value>
</property>

这之后创建 name 和 data 目录:

cd /opt/hadoop
mkdir -p hadoop_tmp/dfs/name # -p 代表递归创建目录
cd hadoop_tmp/dfs/
mkdir data

5.配置 yarn-site.xml:

gedit yarn-site.xml 

<configuration> </configuration> 标签里面添加如下内容:

<property>
    <!-- 指定 YARN 的 ResourceManager 的地址,NameNode 节点中的一个 -->
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>
<property>
    <!-- reducer 取数据的方式是 mapreduce_shuffle -->
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</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:8031</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>

6.配置 mapred-site.xml:

默认文件名为 mapred-site.xml.template,配置这个文件前,需要将这个文件重命名:

mv mapred-site.xml.template mapred-site.xml
gedit mapred-site.xml
<property>
    <!-- 通知框架 MR 使用 YARN -->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:19888</value>
</property>

3.7、Hadoop 集群

将 Hadoop 分发,在 master 机器配置完成以后, 将 /opt/hadoop 文件夹复制到各个节点上:

先在 master 节点压缩:

cd /opt/hadoop
sudo tar czvf hadoop.master.tar.gz hadoop/

然后切到 slave 节点:

scp hadoop@master:/opt/hadoop.master.tar.gz /opt
sudo tar xzvf hadoop.master.tar.gz

解压后配置 hadoop 环境变量,然后 hadoop version 验证一下。

至此,如果集群已经安装完毕。

四、运行 Hadoop 集群

1.首次启动需要先在 master 节点执行 namenode 的格式化:

cd /opt/hadoop/bin
hdfs namenode -format # 格式化文件系统

2.当格式化通过之后,就可以启动 hadoop 了,启动必须在 master 节点上运行:

start-dfs.sh

通过 jps 查看,master 节点至少有三个进程, slave1 和 slave2 至少有 2 个:

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

通过 web 界面查看是否配置成功,在浏览器中输入http://192.168.184.131:50070:

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

3.启动 strat-yarn.sh:

start-yarn.sh

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

通过 hdfs dfsadmin -report 命令,查看集群是否正常启动:

hdfs dfsadmin -report

《【Hadoop】Ubuntu 16.04 VMware hadoop 2.7.4 集群安装》

4.可选启动命令 mr-jobhistory-daemon.sh start historyserver:

这个脚本的服务是实现 web 查看作业的历史运行情况,有些情况下,作业运行完了,在 web 端就无法查看运行情况,可以通过开启这个的守护进程来达到查看历史任务。

5.关闭集群:

# 关闭集群的操作必须在 hadoop20 执行
stop-yarn.sh
stop-dfs.sh             # 单独启动 HDFS 集群
start-mapred.sh    # 单独启动 Map/Reduce 
start-all.sh             # 同时启动HDFS和Map/Reduce
mr-jobhistory-daemon.sh stop historyserver

# 从主节点 master 关闭 hadoop,主节点会关闭所有从节点的 NameNode 进程
stop-all.sh

五、附:HDFS 常用操作

hadoop fs -ls 
# 列出HDFS下的文件

hadoop fs -mkdir /input
# 在 HDFS / 目录下创建 input 文件夹

hadoop fs -ls /input 
# 列出 HDFS 下某个文档中的文件

hadoop fs -put test1.txt /input/test 
# 上传文件到指定 HDFS /input 目录下并重新命名,只有所有的 DataNode 都接收完数据才算成功

hadoop fs -get /in getin 
# 从 HDFS 获取文件并且重新命名为 getin,同 put 一样可操作文件也可操作目录

hadoop fs -rmr /output
# 从 HDFS 上删除指定文件

hadoop fs -cat /input/* 
# 查看 HDFS 上 input 目录的内容

hdfs dfsadmin -report 
# 查看 HDFS 的基本统计信息

hdfs dfsadmin -safemode enter # 进入安全模式
hdfs dfsadmin -safemode leave # 退出安全模式
    原文作者:w1992wishes
    原文地址: https://www.jianshu.com/p/ada64c315783
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞