从零开始构建 Hadoop 集群
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,一、简介当今只要谈到大数据,自然想到Hadoop,以前Hadoop还只是个软件、系统,而如今更多代表的是一个大数据生态圈。本文谈的 Hadoop 特指一个软件,它是 Apache 基金会的顶级项目之一
千家信息网最后更新 2024年11月26日从零开始构建 Hadoop 集群
一、简介当今只要谈到大数据,自然想到Hadoop,以前Hadoop还只是个软件、系统,而如今更多代表的是一个大数据生态圈。本文谈的 Hadoop 特指一个软件,它是 Apache 基金会的顶级项目之一,它本身主要解决了大数据领域的两大核心问题,如何存储(hdfs)、如何计算(mapreduce)。官方文档:http://hadoop.apache.org闲言少叙,下面进入正题。二、部署环境的准备工作1、服务器本次选择使用4台物理机来搭建Hadoop集群,配置如下Master CPU(24核) MEM(48G) DISK(2T*1 -> RAID10)Slave01 CPU(24核) MEM(12G) DISK(1T*4)Slave02 CPU(12核) MEM(24G) DISK(1T*4)Slave03 CPU(24核) MEM(16G) DISK(1T*4)# 还是挺惨的~2、系统选择的是 CentOS 6.9 x86_64三、系统初始化1、配置主机名、停用多余的服务、关闭SELinux、Iptables2、修改最大打开文件描述符shell > tail -4 /etc/security/limits.conf * - nofile 65536# End of file3、关闭透明大页shell > tail -1 /etc/rc.local echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag4、创建 Unix 用户账号shell > useradd hadoop | echo hadoop | passwd --stdin hadoop# 所有服务器都需要创建5、格式化硬盘shell > mkdir /dfs && chown -R hadoop.hadoop /dfs# Master 执行shell > mkdir -p /dfs/{disk1,disk2,disk3}shell > mkfs.ext4 /dev/sdb、/dev/sdc、/dev/sddshell > tail -3 /etc/fstab /dev/sdb /dfs/disk1 ext4 defaults,noatime 0 0/dev/sdc /dfs/disk2 ext4 defaults,noatime 0 0/dev/sdd /dfs/disk3 ext4 defaults,noatime 0 0shell > mount -ashell > chown -R hadoop.hadoop /dfs# 所有 Slave 都需要执行6、时间同步shell > crontab -l0 */2 * * * /usr/sbin/ntpdate us.pool.ntp.org | /sbin/hwclock -w > /dev/null# 时间同步挺重要的, 上次遇到过由于时间不同步导致 HBase 的 RegionServer 无法启动# init 6四、搭建 Hadoop 集群1、配置用户免密登陆root shell > ssh-keygen # 生成密钥root shell > ssh-copy-id -i ~/.ssh/id_rsa.pub slave01root shell > ssh-copy-id -i ~/.ssh/id_rsa.pub slave02root shell > ssh-copy-id -i ~/.ssh/id_rsa.pub slave03hadoop shell > ssh-keygen # 生成密钥hadoop shell > ssh-copy-id -i ~/.ssh/id_rsa.pub masterhadoop shell > ssh-copy-id -i ~/.ssh/id_rsa.pub slave01hadoop shell > ssh-copy-id -i ~/.ssh/id_rsa.pub slave02hadoop shell > ssh-copy-id -i ~/.ssh/id_rsa.pub slave03# Hadoop 控制脚本(不是 Hadoop 守护进程)依赖 SSH 来管理服务的启停。# Tips: ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@slave012、安装 jdkshell > rpm -ivh jdk-8u161-linux-x64.rpmshell > ansible slave -m shell -a 'rpm -ivh jdk-8u161-linux-x64.rpm'shell > vim /etc/profileexport JAVA_HOME=/usr/java/defaultshell > source /etc/profileshell > java -versionjava version "1.8.0_161"Java(TM) SE Runtime Environment (build 1.8.0_161-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)# jdk 是需要所有机器都安装的, 且配置环境变量3、下载、安装 Hadoopshell > wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gzshell > tar xf hadoop-2.9.1.tar.gz -C /usr/localshell > chown -R hadoop.hadoop /usr/local/hadoop-2.9.1shell > tail -2 /etc/profileexport HADOOP_HOME=/usr/local/hadoop-2.9.1export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinshell > source /etc/profile4、配置 Hadoop1> hadoop-env.sh 一个全局环境变量控制文件, 该文件中的值会被 yarn-env.sh、mapred-env.sh 覆盖shell > vim /usr/local/hadoop-2.9.1/etc/hadoop/hadoop-env.shexport JAVA_HOME=/usr/java/default # JAVA_HOMEexport HADOOP_HEAPSIZE=1000 # 内存堆大小# Hadoop 默认为每个守护进程分配1000MB内存, 资料显示, 以 NameNode 进程来说, 保守计算每100万个数据块需要1000MB内存,# 我们集群为3个节点, 每个节点有3T硬盘, 数据块大小为256MB, 每个数据块有3个复本, 大概有12000个数据块 -> 3*3000000MB/(256MB*3), 默认值足够了。# Tips: 可以单独为每个进程设置不同的内存大小2> core-site.xmlshell > vim /usr/local/hadoop-2.9.1/etc/hadoop/core-site.xml# 模板文件:HADOOP_HOME/share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml3> hdfs-site.xmlshell > vim /usr/local/hadoop-2.9.1/etc/hadoop/hdfs-site.xml fs.defaultFS hdfs://192.168.10.50 hadoop.tmp.dir file:///dfs/tmp/hadoop-${user.name} io.file.buffer.size 131072 fs.trash.interval 1440 # 模板文件:HADOOP_HOME/share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml4> yarn-site.xmlshell > vim /usr/local/hadoop-2.9.1/etc/hadoop/yarn-site.xml dfs.blocksize 134217728 dfs.replication 3 dfs.namenode.handler.count 100 dfs.namenode.name.dir file:///dfs/name dfs.datanode.data.dir file:///dfs/disk1/data,/dfs/disk2/data,/dfs/disk3/data dfs.namenode.checkpoint.dir file:///dfs/namesecondary # 模板文件:HADOOP_HOME/share/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xml5> mapred-site.xmlshell > vim /usr/local/hadoop-2.9.1/etc/hadoop/mapred-site.xml yarn.resourcemanager.hostname 192.168.10.50 yarn.nodemanager.local-dirs file:///dfs/disk1/nm-local-dir,/dfs/disk2/nm-local-dir,/dfs/disk3/nm-local-dir yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.resource.memory-mb 10240 yarn.nodemanager.resource.cpu-vcores 10 # 模板文件:HADOOP_HOME/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml6> slavesshell > tail /usr/local/hadoop-2.9.1/etc/hadoop/slaves 192.168.10.51192.168.10.52192.168.10.535、同步配置文件shell > ansible slave -m synchronize -a 'src=/usr/local/hadoop-2.9.1 dest=/usr/local/'6、启动 Hadoopshell > su - hadoop -c "hdfs namenode -format" # 格式化文件系统18/06/03 16:24:39 INFO common.Storage: Storage directory /dfs/name has been successfully formatted.# 表示成功shell > su - hadoophadoop shell > start-dfs.sh # 启动 hdfshadoop shell > start-yarn.sh # 启动 yarnhadoop shell > jps # Master 节点服务启动成功14032 ResourceManager13745 SecondaryNameNode14364 Jps13406 NameNodehadoop shell > ansible slave -m shell -a 'jps' # Slave 节点服务启动成功slave02 | SUCCESS | rc=0 >>4324 DataNode4936 Jps4572 NodeManagerslave01 | SUCCESS | rc=0 >>4807 DataNode5065 NodeManager5455 Jpsslave03 | SUCCESS | rc=0 >>4720 DataNode5365 Jps4975 NodeManager五、附加1、hdfs dfs -ls # 列出当前用户家目录18/06/03 17:16:30 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicablels: `.': No such file or directory解决方法:1> 根据你 hadoop 的版本,来 http://dl.bintray.com/sequenceiq/sequenceiq-bin 下载一个对应版本的 hadoop-native-64 包2> 解压压缩包,覆盖到 HADOOP_HOME/lib/native/ 目录下即可!shell > tar xf hadoop-native-64-2.7.0.tar -C /usr/local/hadoop-2.9.1/lib/native/hadoop shell > hdfs dfs -lsls: `.': No such file or directory # 创建用户家目录即可 hdfs -mkdir -p /user/hadoop# 如果没有对应版本就下载个最接近的也行,我的环境 hadoop 2.9.1,下载 2.7.0 没有问题。 mapreduce.framework.name yarn mapreduce.map.memory.mb 2048 mapreduce.reduce.memory.mb 2048 mapred.child.java.opts -Xmx1024m
文件
数据
服务
配置
内存
模板
环境
用户
系统
节点
进程
同步
集群
成功
大小
时间
版本
目录
变量
密钥
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络搭建服务器学习
软件开发课程海报排版
电脑数据库基本操作
请问wow怎么选择服务器
安徽大米网络技术有限公司
昆山选择网络技术创新服务
数据库安全设计的方法手段
网络安全文明上网的手抄报简单
如何使用硬盘上的数据库
网络安全宣言内容
十金数据库
suba数据库
网络安全知识竞赛的目的
数据库改了某个字段还能回滚吗
网络安全厂商面试笔试题
网络安全合作方法
数据库与信息管理课
手机用什么软件开发php
西安酷乐软件开发
美国NHANES数据库 范文
普通百姓对网络安全
江苏服务器工控机的配置
两级网络安全检查
软件开发专业需要什么学历
想做软件开发要多少钱
电脑记事本恢复数据库
数据库技术经典图书
药店网络安全管理制度
学习软件开发将来能干啥
去马来西亚软件开发