13. apache hadoop 4台分布式集群搭建-part1

生产环境磁盘规划问题

首先我们datanode节点的数据是否需要做RAID??
RAID的很大一部分意义是冗余的功能(RAID0除外),但是我们的HADOOP本身就是副本,自带冗余功能啊,所以HADOOP不建议我们做RAID,可以基于JBOD模型将多个磁盘串联成单个设备即可

jbod:多块硬盘合并出来的一个存储空间,当地一块硬盘存满了,会继续存到第2块,一次类推,当一块硬盘损坏,所有数据丢失,HADOOP 推荐单盘JBOD

raid0:区别就是如果你一块硬盘1T,另一块硬盘500G,JBOD之后就是1.5T,速度不变。
但是如果你raid 0,那总容量只有1T,相当于500Gx2,以最小的容量硬盘大小来决定,速度大幅提高。

生产环境中我司datanode服务器不支持JBOD模式,所以采取了单盘做raid0的方式

datanode节点:JBOD或者单盘RAID0
namenode节点:namenode存储元数据,可靠性要求极高,所以我们一定要做raid

主从节点通信问题

如果我们想在HADOOP的主控节点上使用hadoop用户使用命令直接控制从节点,需要怎么办??
ok,那么我们需要打通ssh-key
具体配置方式为:
ssh免密详解

真实HADOOP 结构

13. apache hadoop 4台分布式集群搭建-part1_第1张图片
hadoop结构

说明一下 根据mapreduce的”数据本地优化“”,(data locality optimization)原理,数据的存储节点应该同时是数据的计算分析节点

搭建

1.确定ip 与 角色

我们选择四台设备:

  • 10.1.10.196 NN SNN Resourcemanager
  • 10.1.10.197 Datanode&nodemanager
  • 10.1.10.198 Datanode&nodemanager
  • 10.1.10.199 Datanode&nodemanager

2.修改4台设备主机名

第一步

hostname test001.ziepiyi.corp 

第二步:

sed -i "s#HOSTNAME=localhost.localdomain#HOSTNAME=test001.zipeiyi.corp#g" /etc/sysconfig/network

3. 修改/etc/hosts 添加域名映射

在每台上面修改

vim /etc/hosts
10.1.10.196 test001.zipeiyi.corp
10.1.10.197 test002.zipeiyi.corp
10.1.10.198 test003.zipeiyi.corp
10.1.10.199 test004.zipeiyi.corp

4. 下载并安装java

java下载页面-请自行选择版本

下载:wget http://10.0.70.5/pkgs/jdk-8u51-linux-x64.tar.gz
创建java工作目录:mkdir -p /app/zpy/java
解压:tar zxvf jdk-8u51-linux-x64.tar.gz -C /app/zpy/java  > /dev/null 2>&1
配置环境变量:
echo '# JAVA-8u51' >> /etc/profile
echo 'JAVA_HOME=/app/zpy/java/jdk1.8.0_51' >> /etc/profile
echo 'JAVA_BIN=/app/zpy/java/jdk1.8.0_51/bin' >> /etc/profile
echo 'PATH=$PATH:$JAVA_BIN' >> /etc/profile
echo 'CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
echo 'export JAVA_HOME JAVA_BIN PATH CLASSPATH' >> /etc/profile
即时生效:source  /etc/profile
退出本机重新登陆,或者重新打开一个session,
检测:java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
You have new mail in /var/spool/mail/root

5.配置NTP时间服务

ntp时间服务器是用来保证所有机器的机器时间是同步的,hadoop集群对时间同步有一定要求
这里我们直接使用公网NTP时间服务器进行同步,使用阿里云ntp服务器

ntpdate ntp1.aliyun.com(执行两遍,因为第一次偏移量有时会很大,可以使用第二次进行再次校准)
结果:
1 Sep 10:51:59 ntpdate[2558]: adjust time server 182.92.12.11 offset 0.019492 sec

加入到 crontab里面 
vim /etc/crontab 
*/15 * * * *  root   /usr/sbin/ntpdate ntp1.aliyun.com

6.创建hadoop用户及用户组并创建hadoop的数据和日志目录

useradd hadoop
echo 1qaz@WSX? | passwd --stdin hadoop
mkdir -pv /data/hadoop/hdfs/{nn,snn,dn}    ##说明:nn:namenode  dn:datanode  snn:second namenode 
mkdir -pv /data/hadoop/logs 
修改属主,属组
chown -R  hadoop:hadoop /data/hadoop/

7.配置hadoop用户的ssh免登陆

首先su hadoop 
三台分别执行:
ssh-keygen -t rsa
cd ~
chmod  -R 700 .ssh
每台上分别执行四条:(记住每台设备与自己的ssh也要打通)
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.10.196
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.10.197
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.10.198
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.10.199

我们为hadoop用户做ssh 免登陆是因为后面hadoop程序需要,下面我们为root用户也做ssh免登陆,纯粹是为了操作方便

后面详见文章
14. apache hadoop 4台分布式集群搭建-part2

你可能感兴趣的:(13. apache hadoop 4台分布式集群搭建-part1)