生产环境磁盘规划问题
首先我们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 结构
说明一下 根据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
下载: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免登陆,纯粹是为了操作方便