Hadoop集群搭建和简单应用

目录

  1. 概念
  2. 集群服务器准备

1)主要配置步骤

2)环境版本

3)配置网络环境

4)配置基础环境(ssh、npt)

 

  1. 集群服务器规划
  2. 软件安装步骤概述

1)jdk

2)mysql

 

  1. Hadoop安装(可以采用ambari方式部署)
  2. hadoop简单测试使用

一、概念了解

主从结构分类:

一主多从

多主多从

Hadoop中的hdfs和yarn都是主从结构:不同服务的概念不同

 

大数据开发(一)Hadoop集群搭建和简单应用

2018年11月21日

10:46

 

目录

  1. 概念
  2. 集群服务器准备

1)主要配置步骤

2)环境版本

3)配置网络环境

4)配置基础环境(ssh、npt)

 

  1. 集群服务器规划
  2. 软件安装步骤概述

1)jdk

2)mysql

 

  1. Hadoop安装(可以采用ambari方式部署)
  2. hadoop简单测试使用

一、概念了解

主从结构分类:

一主多从

多主多从

Hadoop中的hdfs和yarn都是主从结构:不同服务的概念不同

 

服务

主节点

从节点

HDFS

NameNode(称为Master)

DataNode(称为Slaver)

YARN

ResourceManager(称为Leader)

NodeMangager(称为Follower)

角色

管理者

工作者

 

二、集群服务器准备

 

确定你要安装的软件的版本

一个选取原则: 不新不旧的稳定版本

 

几个标准:

  1)一般来说,刚刚发布的大版本都是有很多问题

  2)应该选择某个大版本中的最后一个小版本

 

1)环境工具及规划

工具名称

版本

下载地址

系统 

centeos7

 

JDK

Jdk8.1

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

hadoop版本

hadoop-2.7.7

http://hadoop.apache.org/common/releases.html

http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

 

 

Mysql

5.7

 

ssh工具

Xshell5

 

sftp工具

Xftp5

 

maven

3.3.9

手工编译 ambari使用

ambari(自动部署)

3.0.1

http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.1.0/ambari-2.7.1.0-centos7.tar.gz

 

http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.1.0/HDP-3.0.1.0-centos7-rpm.tar.gz

 

http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz

 

http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.0.1.0/HDP-GPL-3.0.1.0-centos7-gpl.tar.gz

 

 

 

ambari(自动部署)

 

2.6.2.2

centos6

本地镜像库

 

Ambari 2.6.2.2

 

http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.6.2.2/ambari-2.6.2.2-centos6.tar.gz

 

HDP-2.6.5.0

对应的hdp2.6

http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.6.5.0/HDP-2.6.5.0-centos6-rpm.tar.gz

对应的hdp -utils 2.6

http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6/HDP-UTILS-1.1.0.22-centos6.tar.gz

Python

Python 2.7

手工编译 ambari使用

 

2)配置基础环境

主要是做以下几步:

1、 修改主机名

vim /etc/hostname

hostnamectl set-hostname   xxxx(主机名称)

 

2、 修改 IP 地址

1) 进入网卡目录

    cd /etc/sysconfig/network-scripts/

2) vi  ifcfg-exxxx(根据实际名称,可以使用ifconfig查看  centeos 最小化安装时,可以使用ip addr  ip link 查看ip信息,ifconfig 过时了)        

        修改或者添加IP信息:

IPADDR=    #IP地址

NETMASK=  255.255.255.0 #掩码

GATEWAY=  192.168.204.2 #网关

3)保存退出并重启网卡

    systemctl restart network 或者service network restart

 

3、 添加主机名和 IP 映射(host)

编辑 /etc/hosts文件

vi /etc/hosts

在文件尾部添加内容,格式:IP地址 主机名(中间用空格分隔),保存退出

 

192.168.204.129 hadoop1

192.168.204.130 hadoop2

192.168.204.131 hadoop3

 

 

4、 添加普通用户 hadoop 用户并配置 sudoer 权限

 

 

 

 

然后用命令 su - ,即可获得root权限进行操作。

 

  • # 保存退出后hadoop用户则拥有了sudo权限
  • # 若要给violet用户增加sudo权限,需要增加如下一行
  • root    ALL=(ALL)       ALL
  • hadoop    ALL=(ALL)       ALL
  • # 找到权限设置,如下
  • root    ALL=(ALL)       ALL
  • # 修改sudoers文件
  • vim /etc/sudoers
  • #adduser tommy  添加用户 需要再用
  • # 首先切换为root用户
  • su root

5、 设置系统启动级别

 

6、 关闭防火墙/关闭 Selinux

centos 6

 

service iptables status

 

1 关闭防火墙-----service iptables stop 

2 启动防火墙-----service iptables start 

3 重启防火墙-----service iptables restart 

4 查看防火墙状态--service iptables status 

5 永久关闭防火墙--chkconfig iptables off 

6 永久关闭后启用--chkconfig iptables on

 

----------------centos 7----------

查看防火墙状态

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service

-------------------------

关闭selinux

进入到/etc/selinux/config文件

vi /etc/selinux/config

 

将SELINUX=enforcing改为SELINUX=disabled

 

7、 安装 JDK 两种准备方式:

  1、 每个节点都单独设置,这样比较麻烦。线上环境可以编写脚本实现

  2、 虚拟机环境可是在做完以上 7 步之后,就进行克隆

  3、 然后接着再给你的集群配置 SSH 免密登陆和搭建时间同步服务

1.在centos7系统下搜索并删除旧版本的JDK或者openjdk,搜索指令为:rpm -qa | grep java

  

[root@localhost ~]# rpm -qa|grep jdk

java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64

java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64

 

[root@localhost ~]# yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64

[root@localhost ~]# yum -y remove java java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64

[roo

 

2.删除干净之后,在jdk-8u45-linux-x64.tar.gz安装包的文件夹下面右键鼠标打开终端,然后将安装包解压到指定的文件夹,

   解压指令为:tar -zxvf jdk-8u45-linux-x64.tar.gz -C /usr/local

   这里我把安装包解压在/usr/local下面。注意-C,后面要添加路径。

 

3.设置环境变量,首先是打开设置环境变量的文件夹,指令为:

vi  /etc/profile

然后在英文输入法下切换到“插入”的状态,可以直接在开头的“# will prevent the need for merging in future updates.”这一行下面配置下面环境变量:

export JAVA_HOME=/usr/local/jdk1.8.0_45

export JRE_HOME=/usr/local/jdk1.8.0_45/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$PATH

按出“::wq”保存退出后,在输入指令:source /etc/profile     使设置的环境变量生效。

 

4.检查是否安装成功,输入指令:java -version    ,如果终端出现

java version "1.8.0_45"

Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

表示安装成功。

 

---进到rpm包所在目录

yum -y install  xxxx.rpm

 

vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_191-amd64

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

 

8、 配置 SSH 免密登录

配制免密登录的命令(每台机器都要执行)

第一步

ssh-keygen -t rsa                    #生成ssh-key

第二步

ssh-copy-id -i ~/.ssh/id_rsa.pub root@hostsip        #

或者

ssh-copy-id  hadoop@192.168.204.130              #把公共密钥拷贝到集群的.ssh/authorized_keys 中

ssh-copy-id  hadoop@192.168.204.131 

ssh-copy-id  hadoop@192.168.204.132

---详细说明

 namenode的id_rsa.pub添加到datenode的authorized_keys  分别在nn0、dn0、dn1的节点上执行

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@192.168.204.130

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@192.168.204.131

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@192.168.204.132

9、 同步服务器时间

设置ntp时间同步服务

1、安装ntp

yum install -y ntp

2、设置NTP服务开机启动

chkconfig ntpd on

service nptd start

具体操作可以参考普通分布式搭建过程 http://www.cnblogs.com/qingyunzong/p/8496127.html

 

 

 

 

vmwarecentos7设置静态IP

 

1.vmware—》Edit—》Virtual Network Editor,选中vmnet8-Nat设置,查看网关IP

 

 

 

 

 

 

2.在centos中设置:

  vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

 

TYPE=Ethernet

BOOTPROTO=static//把dhcp改为static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=eno16777736

UUID=24e820cb-1975-49cb-b556-73b65fe7d109

DEVICE=eno16777736

ONBOOT=yes//设置开机自启

IPADDR=192.168.125.128//静态IP

GATEWAY=192.168.125.2//上一步中查看得到的网关IP

NETMASK=255.255.255.0//子网掩码

DNS1=61.134.1.5//DNS服务器地址,可以配置多个

PEERDNS=yes

PEERROUTES=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

 

以上加注释的行,如果原文件有就修改,没有就新增

3.修改完成后service network restart重启网络配置,现在应该就可以上网了。

 

 

centos 6

 

 

CentOS Linux解决Device eth0 does not seem to be present

ifconfig...没有看到eth0.。然后重启网卡又报下面错误。

故障现象:

service network restart

Shutting down loopback insterface:                                                                                                     [  OK  ]

Bringing up loopback insterface:                                                                                                          [  OK  ]

Bringing up interface eth0:  Device eth0 does not seem to be present,delaying initialization.                    [FAILED]

 

解决办法:

首先,打开/etc/udev/rules.d/70-persistent-net.rules内容如下面例子所示:

# vi /etc/udev/rules.d/70-persistent-net.rules

# This file was automatically generated by the /lib/udev/write_net_rules

# program, run by the persistent-net-generator.rules rules file.

#

# You can modify it, as long as you keep each rule on a single

# line, and change only the value of the NAME= key.

# PCI device 0x1022:0x2000 (pcnet32)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:8f:89:9

7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:50:bd:1

7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

记录下,eth1网卡的mac地址00:0c:29:50:bd:17

接下来,打开/etc/sysconfig/network-scripts/ifcfg-eth0

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

将 DEVICE="eth0"  改成  DEVICE="eth1"  ,

将 HWADDR="00:0c:29:8f:89:97" 改成上面的mac地址  HWADDR="00:0c:29:50:bd:17"

最后,重启网络

# service network restart

或者

# /etc/init.d/network restart

正常了。

 

来自 <https://www.cnblogs.com/xred/p/3682141.html>

 

 

 

 

 

三、集群服务器规划

使用3台 Centeos7  虚拟机进行集群搭建:

 

节点规划:yarn和hdfs的主节点主服务需要分开放

服务器

IP

主机名称

用户

HDFS

YARN

Ambari

hadoop1

192.168.204.129

hadoop1

hadoop

NameNode,DataNode

NodeManager

Ambari-server

hadoop2

192.168.204.130

hadoop2

hadoop

DataNode

ResouceManager,NodeManager

ambari-agent

hadoop3

192.168.204.131

hadoop3

hadoop

DataNode,SecondaryNameNode

NodeManager

ambari-agent

 

 

 

 

 

 

 

 

目录规划

 

路径

安装用户

hadoop

软件包

/home/hadoop/software

安装目录

/home/hadoop/apps

数据目录

/home/hadoop/data

 

 

四、软件安装步骤概述

 

(1) 上传压缩包

Xshell  sftp 上传 hadoop压缩包

 

cd /home/hadoop/software

tar -xzvf hadoop-2.7.7.tar.gz -C  ~/apps/

(2)修改配置文件

配置文件目录:/home/hadoop/apps/hadoop-2.7.7/etc/hadoop

   修改 hadoop-env.sh文件 :主要修改JAVA_HOME

 

 

需要修改的配置文件

修改内容

 说明

hadoop-env.sh

 

主要修改JAVA_HOME

 

 

core-site.xml

 

 

修hadoop的namenode的hdfs协议的文件系统通信地址(fs.defaultFS)、

hadoop临时目录、

zookeeper目录 zk超时时长(集成zk时用的)

集成zk时

 

 

hdfs-site.xml

dfs.namenode.name.dir:namenode数据的存放地点。也就是namenode元数据存放的地方,记录了hdfs系统中文件的元数据。

 dfs.datanode.data.dir: datanode数据的存放地点。也就是block块存放的目录了。

dfs.replication:hdfs的副本数设置。也就是上传一个文件,其分割为block块后,每个block的冗余副本个数,默认配置是3。

dfs.secondary.http.address:secondarynamenode 运行节点的信息,和 namenode 不同节点

主要修改数据的副本数,数据的存放目录

 

 

mapred-site.xml

 

 

 

mapreduce.framework.name:指定mr框架为yarn方式,Hadoop二代MP也基于资源管理系统Yarn来运行 。

yarn-site.xml

 

 

 yarn.resourcemanager.hostname:yarn总管理器的IPC通讯地址

 

yarn.nodemanager.aux-services    YARN 集群为 MapReduce 程序提供的 shuffle 服务

slaves

Hadoop1

Hadoop2

Hadoop3

所有集群的主机名称列表

 

3Hadoop初始化

注意:HDFS初始化只能在主节点上进行

hadoop namenode -format

 

4)启动hdfs服务

 

注意:不管在集群中的那个节点都可以

start-dfs.sh

 

5)启动yarn

注意:只能在yarn的主节点(yarn-site.xml 中配置的resourceManager的节点)上进行

start-yarn.sh

 

(6) 查看启动状态

Hadoop1

 

Hadoop2

hadoop3

[hadoop@hadoop3 hadoop]$ jps 4049 Nod*anager 4209 Jps 3557 Seconda ryNameNode 3447 DataNode [hadoop@hadoop3 hadoopl$ C]

 

(7)启动HDFSYARNweb管理界面

 

HDFS : http://192.168.204.132:50070

YARN : http://192.168.204.130:8088

疑惑: fs.defaultFS = hdfs://hadoop02:9000

解答:客户单访问HDFS集群所使用的URL地址

同时,HDFS提供了一个web管理界面 端口:50070

 

 

 

六、Hadoop的简单使用

1、运行一个mapreduce的例子程序: wordcount

 

hadoop jar ~/apps/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /test/input /test/output

  
   
   
   











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太阳花先生可爱多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值