大数据基础环境搭建的从spark到hadoop,从底层硬件到上层软件的一些必备注意事项
一、硬件环境
硬件如何搭配,能做到比较高的性价比,不存在短板。合理的硬件搭配,对系统的稳定性也很关键。
1.CPU不是核数越高越好,性价比才是关键。
经常遇到很多的企业级客户,他们机器配置非常高,CPU有128 VCore,256G内存,但是只挂载了1块8T的SATA硬盘,千兆网卡。
这样的机器配置比较适合计算密集型的业务,但是如果是IO密集型的业务的话,就会发现磁盘成为瓶颈,会发现磁盘利用率100%,网络利用率100%,但是CPU只用了不到5%。存在巨大的资源浪费。
2.SAS、SATA与SSD 磁盘的选择与对比
吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。
如下图所示,普通磁盘的IOPS与SSD磁盘的性能相差悬殊,特别是企业级SSD磁盘,能相差千倍以上。
3.SSD的颗粒请不要选择TLC
TLC的寿命太短,虽然便宜,但是用不了几个月就基本报废,一般个人电脑使用。不适合企业级使用,性价比较好的建议选用MLC颗粒。
4.延云YDB建议的硬件配置
离线模式:至少2块独立的物理硬盘分别用于HDFS数据盘、系统盘。
实时模式:至少3块独立的物理磁盘分别用于Kafka数据盘,、HDFS数据盘、系统盘
二、磁盘如何挂载?
1.逻辑卷的问题
2.关于RAID
3.关于系统盘与数据盘
4.关于磁盘阵列与云
5.将大磁盘空间的硬盘与小磁盘空间的硬盘混合挂载
三、操作系统如何选择
1.延云推荐使用CentOS 6.6,6.5的系统(请不要使用CentOS7)
2.尽量选择安装英文语言环境,中文版Ambari有时会有问题,。
对于YDB来说,是不挑操作系统版本的,只要您的系统能安装上Hadoop,那么YDB一般都能运行起来。甚至有些同学还在MAC上调试YDB。但是如果您是要运行在生产系统上,操作系统的选择就尤为重要了。
四、操作系统设置
1.Ulimit配置
echo "* soft nofile 128000" >> /etc/security/limits.conf
echo "* hard nofile 128000" >> /etc/security/limits.conf
echo "* soft nproc 128000" >> /etc/security/limits.conf
echo "* hard nproc 128000" >> /etc/security/limits.conf
sed -i 's/1024/unlimited/' /etc/security/limits.d/90-nproc.conf
cat/etc/security/limits.d/90-nproc.conf
2.Swap的问题
echo "vm.swappiness=1" >> /etc/sysctl.conf
3.网络配置优化
echo " net.core.somaxconn = 32768 " >> /etc/sysctl.conf
4.SSH无密码登录
安装 Hadoop与Ambari均需要无密码登录
设置方法请参考如下命令
ssh-keygen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id root@ydbslave01
ssh-copy-id root@ydbslave02
…..
5.关闭防火墙
6.配置机器名,以及hosts域名解析
切记 hosts文件中 不要将localhost给注释掉,并且配置完毕后,执行下 hostname -f 看下 是否能识别出域名
7.setenforce与Umask配置
sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/refresh-packagekit.conf
cat /etc/yum/pluginconf.d/refresh-packagekit.conf
echo umask 0022 >> /etc/profile
8.检查/proc/sys/vm/overcommit_memory的配置值
如果为2,建议修改为0,否则有可能会出现,明明机器可用物理内存很多,但JVM确申请不了内存的情况。
9.语言环境配置
echo "export LANG=en_US.UTF-8 " >> ~/.bashrc
10.配置时间同步
Hadoop,YDB等均要求机器时钟同步,否则机器时间相差较大,整个集群服务就会不正常,所以一定要配置。建议配置NTP服务。
参考资料如下:http://www.linuxidc.com/Linux/2009-02/18313.htm
11.JDK安装部署
YDB支持JDK1.7,JDK1.8,为了便于管理和使用,建议使用YDB随机提供的JDK1.8
12.环境变量
请大家千万不要在公共的环境变量配置HIVE、Spark、LUCENE、HADOOP等环境变量,以免相互冲突。
13.请检查盘符,不要含有中文
尤其是Ambari,有些时候,使用U盘或移动硬盘复制软件,如果这个移动硬盘挂载点是中文路径,这时在安装Ambari的时候会出现问题,一定要注意这个问题。
14.检查磁盘空间,使用率不得超过90%
默认Yarn会为每台机器保留10%的空间,如果剩余空间较少,Yarn就会停掉这些机器上的进程,并出现Container released on a *lost* node错误。
15.关键日志,定时清理,以免时间久了磁盘满了
如可以编辑crontab -e 每小时,清理一次日志,尤其是hadoop日志,特别占磁盘空间
0 */1 * * * find /var/log/hadoop/hdfs -type f -mmin +1440 |grep -E "\.log\." |xargs rm -rf
第五章非HDP版Hadoop基础服务配置要点
一、Hadoop服务-注意事项
5)规划好Hadoop的logs目录,尽量分给一个大点磁盘存储空间的目录,否则经常会出现导入几十亿数据后,logs目录将系统/var/log给撑满,占用率100%
6)确保将来准备分配给YDB的HDFS目录有读写权限,建议第一次新手安装,取消HDFS的权限验证,配置dfs.permissions.enabled为false,并重启集群。
7)Hadoop的logs目录要配置上定期清理,以免时间久了,硬盘被撑爆。
8)确保HDFS安装成功,一定要手工通过hadoop -put命令,上传一个文件试一试。
10)yarn.nodemanager.resource.memory-mb用于配置Yarn当前机器的可用内存,通常配置当前机器剩余可用内存的80%.
11)yarn.scheduler.minimum-allocation-mb为一个Yarn container申请内存的最小计费单位,建议调小一些,如128,让计费更精准.
12)yarn.scheduler.maximum-allocation-mb为一个Yarn container可以申请最大的内存,建议调整为32768 (不一定真用到这些)
13)不建议启用CGROUPS,进行CPU隔离,对于即席系统来说,尽量充分利用资源。
14)yarn.nodemanager.resource.cpu-vcores 当前机器可以启动的Yarn container的数量,建议配置为当前机器的cpu的线程数的80%。
15)yarn.scheduler.maximum-allocation-vcores配置的稍微大一些,以便单个container能够多启动一些线程。
18)为了便于查找问题,我们一般保留7天的Hadoop日志,可以配置Yarn日志清理yarn.nodemanager.delete.debug-delay-sec 为 604800 (7天)
19)调整dfs.datanode.max.transfer.threads的值,默认4096太小,建议调整为10240
20)调整ipc.server.listen.queue.size为32768
21)调整yarn.resourcemanager.am.max-attempts的值为10000000,默认的2次太小,客户测试过程反复的kill就会导致整个任务失败。
二、Spark 需要使用延云提供的spark版本
1)无需配置,只需要解压开放到指定目录即可,我们一般解压到/opt/ydbsoftware/spark
2)请大家不要启动spark服务,YDB本身会自己调用Spark启动服务,无须我们额外为Spark启动服务。
三、ZooKeeper服务注意事项
第一:要探测ZooKeeper的2181端口是否启动 可以通过netstat –npl|grep 2181来查看
第三:ZooKeeper的日志清理要打开,否则会出现系统运行几个月后,ZooKeeper所在的磁盘硬盘变满的情况,将zoo.cfg里的这两个配置项注释开即可:
第四:YDB使用的ZK的版本一定要与ZK的版本一致,如果不一致请更换ya100/lib下的zookeeper相关jar包。
四、Kafka注意事项
如果kafka配置的不好, 会发生比较严重的数据倾斜,而且在压力较大的情况会导致数据丢失。所以跟Kafka有关的如下配置,请一定要认真阅读
注:spark.executor.max.usedcores默认(没有配置)为2个,表示每个进程会启动2个分片。
如果磁盘长时间使用率100%,必出现丢数据,会出现如下异常,配置的kafka retry机制无效
l如果我们先前采用的send方法没使用callback,一旦消息发送失败,我们没有处理异常的话,这个消息就丢了。
这个问题如何解决?
1)如果有条件,Kafka尽量独立集群,最低要求也一定要独立磁盘,并且写入限速
独立磁盘是解决问题的根本,磁盘很繁忙的情况下,broker出错的概率很大。
2)send 里面的callback,如果是异常一定要自己做容错处理
发现send函数里的callback,一定要对Exception exception不是null的情况做重试处理,一定要处理,根据判断重试几次。
3)调整kafka的参数
a)建议在Producter端增加如下参数
props.put("compression.type", "gzip");
props.put("linger.ms", "50");
props.put("acks", "all");
props.put("retries ", 30);
props.put("reconnect.backoff.ms ", 20000);
props.put("retry.backoff.ms", 20000);
b)在Server端的broker增加如下配置
第六章非HDP版本的YDB部署
一、安装前的准备
请参考第三章基本环境注意事项,第四章的依赖的服务注意事项,准备基础环境,这个很重要。
二、YDB软件下载
从http://url.cn/42R4CG8获取延云软件
该Spark延云修正了一些BUG,以及在SQL解析上做了处理
三、特殊版本的Spark的编译
如果我们的Hadoop版本比较特殊,大家可以从延云下载Spark源码执行进行编译。
修改源码包里面的ydb.combile.sh,将里面的hadoop改成我们对应的版本。
然后直接运行 sh ./ydb.compile.sh 即可,编译时间取决于我们的网络,首次编译时间估计会非常长,可以先下载延云提供的repository.tar.gz,以减少访问国外网络的下载时间。
四、软件解压
解压到/opt/ydbsoftware目录下,最后可以看到目录结构是这样的
conf目录是YDB的所有配置文件,bin目录是YDB的执行文件
五、配置conf目录下的ya100_env.sh环境变量
export HADOOP_CONF_DIR=/etc/hadoop/conf
export HADOOP_HOME=/usr/hdp/current/hadoop-client
export JAVA_HOME=/usr/jdk64/jdk1.8.0_60
export SPARK_HOME=/root/software/spark-1.6.1
注意:配置过后大家一定要手工验证下,相关目录的配置文件是否真的存在
#为启动的进程数量,切记不要超过Yarn总的VCores的数量-1
#如果有3台机器,每台机器配置12个的话那么下面这项的值要写36,不要只写12
#YA100_EXECUTORS*YA100_MEMORY的大小建议为yarn总内存的3/5(剩下的留给操作系统)
#关于内存控制参数的详细说明,请阅读example下的《3.大家需要了解的几个内存控制的参数.txt》说明
#配置值不可超过Yarn的yarn.scheduler.maximum-allocation-vcores的值
export YA100_DRIVER_MEMORY=6000m
六、配置conf目录下的ydb_site.yaml环境变量
4.注意每个KEY : VALUE 之间是有一个空格的,如果value是字符串类型,要用双引号括起来
1.配置 YDB的存储路径的配置 ydb.hdfs.path
注意YDB的存储路径与ya100的存储路径不是一个,要分别配置成不同的路径,不能重复
ya100的默认存储路径在conf目录下的hive-site.xml中的hive.metastore.warehouse.dir
Ya100的每张表的存储路径也可以再创建表的时候由location来指定。
2.配置Ydb在实时导入过程中,所使用的临时目录ydb.reader.rawdata.hdfs.path
3.配置ydb http ui服务的端口 ydb.httpserver.port 默认为1210
4.配置ydb依赖的zookeeper:storm.zookeeper.servers 与 storm.zookeeper.root
七、其他ya100/conf目录下的配置文件的说明
hive-site.xml hive表的配置,如果想要更改Hive的一些配置,如将Hive的元数据写入到数据库里,可修改此文件。
spark-defaults.conf 用于配置Spark,如果需要修改Spark的默认调度规则,可以修改此配置。
init.sql 为ya100启动时候的初始化方法,如果我们的业务需要自定义UDF,可以考虑将自定义UDF语句放到这里,通过init.sh来执行
driver.log.properties为接口程序的log4j的配置,默认日志记录在logs目录下
八、开始部署延云YDB-服务的启动与检查
./restart-all.sh 或 ./start-all.sh
1.tail -f ../logs/ya100.log 看是否有报错,当出现如下的日志,表示启动成功
2.打开yarn的8088页面,看启动的container数量以及内存的时候是否正确
3.看下面是否有ya100 on spark的任务,点击对应的Application Master看是否能打开Spark的UI页面
第三:YDB服务检查
1.通过浏览器打开:1210页面,看是否能打开
2.点开“work工作进程列表”看启动的worker数量是否与在ya100_env.sh里配置的YA100_EXECUTORS数量一致
第四:服务的停止
./stop-all.sh
大数据基础环境搭建的从spark到hadoop,从底层硬件到上层软件的一些必备注意事项相关推荐
- 大数据基础平台搭建-(一)基础环境准备
大数据基础平台搭建-(一)基础环境准备 大数据平台系列文章: 1.大数据基础平台搭建-(一)基础环境准备 2.大数据基础平台搭建-(二)Hadoop集群搭建 3.大数据基础平台搭建-(三)Hadoop ...
- 大数据学习环境搭建系列(二)虚拟机软件Vmware的安装
作者 | CDA数据分析师 概述 在进行分布式架构的学习前,首先需进行基础环境准备.众所周知,在单机运算能力无法满足处理海量数据的运算能力时,人们普遍开始考虑使用分布式运算来代替单机运算,这也成为了大 ...
- Hadoop大数据平台环境搭建注意事项,分布式数据采集,武汉数道云科技
Hadoop大数据作为时代发展的产物,影响着互联网企业发展.以及企业关于品牌形象推广.政府有关民意采集.以及有关数据信息收集分类------ Hadoop技术的发展,带来了海量数据高效处理的能力,也给 ...
- 大数据all_in环境搭建
大数据环境搭建 环境介绍 免密登陆 安装jdk 安装scala 安装zookeeper 安装mysql 安装hadoop 安装hive 安装hue 安装datax 安装kafka 安装flink 安装 ...
- 大数据_zookeeper环境搭建中的几个坑
文章目录 [] Zookeeper简介 关于zk的介绍, zk的paxos算法, 网上已经有各位大神在写了, 本文主要写我在搭建过程中的几个极有可能遇到的坑. Zookeeper部署中的坑 坑之一 E ...
- 大数据学习环境搭建系列(十二)Xshell的安装使用
作者 | CDA数据分析师 尽管很不适应也很不情愿,但在实际工作情景当中,企业不会将有限物理硬件的基础上给工作人员提供图形化桌面操作界面(此举将极大的浪费计算资源),因此大多数情况我们针对分布式集群的 ...
- 云创大数据实验环境搭建
一.用到的软件 1.jdk-8u121-windows-x64 2.opengui-install-2.3.13-win7up-x86_64 3.WinSCP_5.9.0.6786_Setup 4.X ...
- Linux基础环境搭建(CentOS7)- 安装Flume
Linux基础环境搭建(CentOS7)- 安装Flume 大家注意以下的环境搭建版本号,如果版本不匹配有可能出现问题! Linux基础环境搭建(CentOS7)- 虚拟机准备 Linux基础环境搭建 ...
- 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)
换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...
最新文章
- 怎么查看本地电脑是否安装了Git
- [WWDC] What's New in Swift 4 ?
- printf()用法详解(转)
- (转) Unity3D 使用Texturepacker打包工具制作NGUI(Atlas)图集
- rocketmq还要eventbus_ListEventBuses_ListEventBuses_事件总线_C# SDK_阿里云SDK参考_事件总线EventBridge - 阿里云...
- 学Linux从编译命令开始——arm-linux-gcc常用参数讲解
- c语言多维数组基础知识,C语言基础第7章多维数组.ppt
- Laravel Passport里的授权类型介绍
- 开源java博客tale_用Tale快速搭建个人博客
- 20muduo_base库源码分析(十一)
- 如何用DOM4J编程使用xml schema
- 3D LUT Creator Pro for Mac(专业调色软件)中文版
- 《逻辑思维训练》读书笔记
- ffmpeg转码文件输出rtsp流
- 四大国有银行股份制改革的确切时间
- C51最小单片机系统
- 卸载精灵(bue directx) r4.0 完美版 绿色
- CE 开启 DBVM
- 全面升级,你能想象的都在这————京东API接口
- 积木式编程——自制app点灯