Hadoop分布式环境部署

机器选型

实际应用中通常分为2种java

第一种:硬件服务器node

第二种:云主机linux

准备工做

在VM ware12环境下搭建三台服务器vim

配置ip,主机名,本地映射(/etc/hosts)centos

另外两台由原先克隆而来安全

克隆机器后,修改mac地址服务器

使用root:网络

vim /etc/udev/rules.d/70-persistent-net.rules

(1)删除eth0架构

(2)将eth1修改成eth0并发

(3)复制mac地址

(4)编辑网卡信息 ,修改ip地址和Mac地址

vim /etc/sysconfig/network-scripts/ifcfg-eth0
(5)修改hostname
vim /etc/sysconfig/network

(6)修改Hosts文件,配置映射

(7)关闭防火墙

 $ sudo chkconfig iptables off

(8)关闭Selinux(安全性过高,解决没必要要的麻烦)必需要重启机器才能生效配置

$ sudo vim /etc/sysconfig/selinux
设置值:
SELINUX=disabled

(7)重启网络

service network restart

(8)经过ifconfig命令查看是否配置成功

(9)重启虚拟机

注:这里我三台虚拟机ip,主机名依次为

192.168.59.223  bigdata-hpsk02.huadian.com
192.168.59.224  bigdata-hpsk03.huadian.com
192.168.59.225  bigdata-hpsk04.huadian.com

安装方式

1.不使用批量安装工具

手动分发,将配置好的第一台hadoop分发到每台机器。这里我使用分发的方式

2.使用批量工具:大数据集群监控运维管理工具CM

CDH:开源软件基础架构Hadoop的服务。

能够在http://archive.cloudera.com/cdh5/cdh/5/下载稳定的版本

部署

在Linux中建立统一的用户,统一的目录

建立用户

useradd username

给用户添加密码

passwd username

建立目录

在根目录下建立这四个文件夹,datas放测试数据 softwares放软件安装压缩包 modules软件安装目录 tools开发IDE以及工具 。

 

修改句柄数

linux系统都是用文件来表示的,并发调优时修改句柄数时必须的。设置的是当前用户准备要运行的程序的限制。

若是单个进程打开的文件句柄数量超过了系统定义的值由于有时候会赶上Socket/File: Can't open so many files的问题

ulimit -a   #查看linux相关参数

其中一个方法,是想ulimit修改命令放入/etc/profile里面,可是这个作法并很差

正确的作法,应该是修改/etc/security/limits.conf

sudo vim /etc/security/limits.conf

在文件末尾添加:

重启机器,查看句柄数

ulimit -n

hadoop启动方式

单个进程启动:用于启动
    sbin/hadoop-daemon.sh start namenode
    sbin/hadoop-daemon.sh start datanode
    sbin/yarn-daemon.sh start resourcemanager
    sbin/yarn-daemon.sh start nodemanager
分别启动yarn和hdfs:用于关闭
    sbin/start-dfs.sh
        -》namenode
        -》datanode
        -》secondarynamenode
    sbin/start-yarn.sh
        -》resourcemanager
        -》全部的nodemanager
一次性启动全部进程
        sbin/start-all.sh

ssh免秘钥登陆别的机器启动相应的服务

(1)每台机器为本身建立公私钥

ssh-keygen -t rsa

能够在用户目录下的.ssh文件夹中看到生成的id_rsa id_rsa.pub

(2)每台机器将本身的公钥发给每台机器包括本身

ssh-copy-id 本身的主机名
ssh-copy-id 另外第一台主机名
ssh-copy-id 另外第二台主机名

验证是否3台机器能互相登陆成功(为了省事就贴一张图了):

NTP时间同步:经过ntp服务实现每台机器的 时间一致

直接使用ntp服务同步外网时间服务器
			-》选择一台机器做为中间同步服务A,A与外网进行同步,B,C同步A
				-》配置A   sudo vim  /etc/ntp.conf
					删除默认配置:
						restrict default kod nomodify notrap nopeer noquery
						restrict -6 default kod nomodify notrap nopeer noquery
						restrict 127.0.0.1
						restrict -6 ::1
						
						server 0.centos.pool.ntp.org
						server 1.centos.pool.ntp.org
						server 2.centos.pool.ntp.org
					-》添加
						配置A容许哪些机器与我同步
						restrict 192.168.59.0 mask 255.255.255.0 nomodify notrap
						配置A跟谁同步
						server 202.112.10.36
						配置本地同步
						server  127.127.1.0     # local clock     注:127.127.1.0 ntp时间服务器的保留ip地址,做用是使用本机做为客户端的时间服务器
						fudge   127.127.1.0 stratum 10  
					-》启动ntp服务
						sudo service ntpd start
				-》配置B,C同步A
					sudo vim /etc/ntp.conf
					server 192.168.59.223
					
					-》手动同步
						sudo ntpdate 192.168.59.223
					-》开启ntp服务
						sudo service ntpd start

偷懒作法:

三台机器同时设置时间

sudo date -s "2018-04-27 15:56:00"

安装JDK

(1)上传压缩包到softwares目录下

(2)解压到指定目录

tar -zxvf /opt/softwares/jdk-8u91-linux-x64.tar.gz -C /opt/modules/

(3)分发到第二台,第三台机器

scp -r jdk1.8.0_91 hpsk@bigdata-hpsk03.hpsk.com:/opt/modules/
scp -r jdk1.8.0_91 hpsk@bigdata-hpsk04.hpsk.com:/opt/modules/

(4)配置环境变量(每台机器)

vi /etc/profile
进入后在尾部添加
##JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin

安装hadoop

(1)上传压缩包到softwares目录下

(2)解压到指定目录

tar -zxvf /opt/softwares/hadoop-2.7.3.tar.gz -C /opt/modules/
z:表示gz压缩  x:表示解包  v:表示压缩过程  -C指定解压地址

(3)节点分布

机器1 datanode nodemanager namenode(工做)

机器2 datanode nodemanager nn rm(备份)

机器3 datanode nodemanager resourcemanager(工做)

datanode 存储数据 nodemanager处理数据

本地的Nodemanager优先处理本地的datanode避免了跨网络传输。(Hadoop本身的优化)

namenode resourcenode都是主节点,都须要接收用户的请求,若是都放在机器1上负载比较高,故将他们分布到不一样的机器。

(4)修改配置文件

env.sh:配置环境变量

默认会先去全局变量/etc/profile中找JAVA_HOME 可是为了避免出现问题在下面三个文件中配置JAVA_HOME环境变量。配置文件在/hadoop2.7.3/etc/hadoop/hadoop-env mapred-env yarn-env

site-xml:配置用户自定义需求

core-site.xml:配hadoop全局的一些属性

先在hadoop目录下建立临时存储目录,存储元数据

<configuration>
    //fs.defaultFS:hdfs的入口  配置第一台机器的入口
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata-hpsk02.huadian.com:8020</value>
    </property>
    
    //hadoop.tmp.dir hadoop临时存储目录
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/modules/hadoop-2.7.3/tmpData</value>
    </property>
</configuration>

hdfs-site.xml:配置hdfs的属性

<configuration>
     //dfs.replication:文件副本数
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    //访问权限,不是hdfs同属用户没有权限访问。关闭,让全部人访问hdfs。工做中不能这么配
    <property>
        <name>dfs.permissions.enabled</name>
        <value>true</value>
    </property>
</configuration>

mapred-site.xml :配置MapReduce

//让MapReduce运行在Yarn上
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    //jobhistory
</configuration>

yarn-site.xml

<configuration>
//指定resourcemanager在哪台机器上运行
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>bigdata-training03.hpsk.com</value>
    </property>
//指定yarn上运行的程序是什么类型
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

slaves:配置全部从节点的地址 (一行一个)

bigdata-hpsk02.huadian.com
bigdata-hpsk03.huadian.com
bigdata-hpsk04.huadian.com

分发

从第一台机器将hadoop-2.7.3目录分发给另一台机器

scp -r hadoop-2.7.3 hpsk@bigdata-hspk03.huadian.com:/opt/modules/

或者另外一台机器从第一台上下载

scp -r hpsk@bigdata-hpsk02.huadian.com:/opt/modules/hadoop-2.7.3  /opt/modules/

注意要改变/opt/modules目录用户权限

启动测试

格式化文件系统,格式化的时候会产生新的元数据,在哪里启动namenode就在哪台机器上进行格式化

bin/hdfs namenode -format

启动对应进程,用单个进程命令

在第一台机器上启动namenode

sbin/hadoop-daemon.sh start namenode

namenode将元数据保存在咱们以前在core-site.xml中配置的临时存储目录。里面包含fsimage:文件系统快照 edit logs:对文件系统的改动序列。

注意:不能再第一台机器上执行start-yarn.sh 会默认启动resourcemanager主节点。咱们要将resourcemanager在第三台机器上启动。

启动三台机器的datanode

sbin/hadoop-daemon.sh start datanode

在第三台上机器上启动yarn

sbin/start-yarn.sh

报错了..缘由:找不到resourcemanager的主机名。主机名不对。。

yarn-site.xml文件中

改为第三台的主机名:

bigdata-hpsk04.huadian.com

最后查看进程:

第一台机器:

第二台:

第三台:

到此分布式环境搭建完毕~

在HDFS上建立一个Input目录

新建一个测试文件

内容:

上传到input目录下

测试wordcount程序,能够看到链接的是第三台,第三台才有resourcemanager

查看结果

停掉全部进程能够用统一的执行命令

第一台机器上执行:

sbin/stop-dfs.sh

关闭全部namenode datanode

第三台机器上执行:

sbin/stop-yarn.sh

关闭全部resourcemanager nodemanager

补充:能够在空闲的机器上启动secondary namenode

相关文章
相关标签/搜索