Ubuntu 16.04 VMware hadoop 2.7.4 集群安装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w1992wishes/article/details/81810417

一、前言

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

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

二、hadoop 集群环境

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

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

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

三个节点准备好,通过 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

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 公钥文件。

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

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

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

接着在 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

保存后使配置生效:

source /etc/profile

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

3.6、配置 hadoop 相关文件:

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

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

gedit hadoop-env.sh 

2.配置 slaves:

gedit slaves

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

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

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

3.启动 strat-yarn.sh:

start-yarn.sh

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

hdfs dfsadmin -report

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 # 退出安全模式

猜你喜欢

转载自blog.csdn.net/w1992wishes/article/details/81810417