题记
第一次接触Hadoop的时候是15年,在实习公司进入大数据业务组(技术总监,项目经理,我),那时候天天捧着《Hadoop权威指南》云里雾里的看,一遍学习Linux,一遍看着书里的架构原理。后来直接用一台Ubuntu就开始安装Hadoop"集群"了+_+,最后在安装到HBase的时候,彻底崩溃,因为是伪分布式,到了Zookeeper的配置,真的真的不知道该怎么去配置了,所以以失败告终,后来公司采用的是TDH星环,国内一个还不错的发行版。再后来一年,大学毕业,开始全身心的做大数据,Hadoop 2.5.2, Hive, HBase, Spark1.6, Kafka0.8已经完全的搭建起来了。时光到了现在,公司环境在用Hadoop2.7, Spark 2.1两个主要的大数据计算框架,早在一年前,我就已经听说Hadoop 3.0要踏着圣光重出江湖了,于是准备拿自己的集群搭建玩一玩......
Hadoop 3.0简介
本次介绍的版本:hadoop-3.0.0-beta1
这是3.0.0发行版中的第一个测试版本。它由自3.0.0-alpha4以来的576个错误修复,改进和其他增强组成。这是计划成为最终的alpha版本,下一个版本是3.0.0 GA。
此版本API是稳定的,但没有质量保证,不适用于生产用途。
Java环境
Java 8 以上
HDFS中新特性‘纠删码’
纠删码是一种持久存储数据的方法,与复制相比,显着节省空间。像Reed-Solomon(10,4)这样的标准编码有1.4倍的空间开销,而标准HDFS复制的开销是3倍。由于擦除编码在重建期间施加了额外的开销并且主要执行远程读取,因此传统上它被用于存储冷数据,较不频繁访问的数据。部署此功能时,用户应考虑删除编码的网络和CPU开销。
YARN Timeline Service
YARN Timeline Service 解决了两个主要挑战:提高时间轴服务的可伸缩性和可靠性,并通过引入流量和聚合来提高可用性。
Shell脚本重写
Hadoop shell脚本已被重写,以修复许多长期存在的错误,并包含一些新功能。尽管保持兼容性,但有些更改可能会破坏现有的安装。
MapReduce任务级本地优化
MapReduce增加了对map output collector本地实现的支持。对于shuffle操作,这可以得到30%或更多的性能提升。
支持2个以上NameNode
为单个活动NameNode和单个Standby NameNode提供了HDFS NameNode高可用性的初始实现。通过将编辑复制到三个JournalNode的法定数量,该架构能够容忍系统中任何一个节点的故障。但是,有些部署需要更高的容错度。这是由这个新功能启用的,它允许用户运行多个备用NameNode。例如,通过配置三个NameNode和五个JournalNode,群集能够容忍两个节点的故障,而不是一个故障。
多个服务的默认端口已被更改
以前,多个Hadoop服务的默认端口位于Linux临时端口范围(32768-61000)内。这意味着在启动时,由于与其他应用程序的冲突,服务有时会无法绑定到端口。这些冲突的端口已经被移出了临时范围,影响了NameNode,Secondary NameNode,DataNode和KMS。我们的文档已经适当地更新了,更新端口详情请看官网
支持Microsoft Azure Data Lake和Aliyun Object Storage System文件系统连接器
Hadoop现在支持与Microsoft Azure Data Lake和Aliyun对象存储系统的集成,作为替代Hadoop兼容的文件系统。
内部datanode平衡器
一个DataNode管理多个磁盘。在正常的写入操作中,磁盘将被均匀地填满。但是,添加或替换磁盘可能会导致DataNode中出现明显的偏差。这种情况并不是由现有的HDFS平衡器来处理的,这个平衡器本身是关于DN内部而不是内部偏斜的。这种情况由新的DataNode内部平衡功能处理,通过hdfs diskbalancer CLI 调用。
重做守护进程和任务堆管理
Hadoop守护进程和MapReduce任务的堆管理已经进行了一系列更改。引入了配置守护进程堆大小的新方法。值得注意的是,现在可以根据主机的内存大小自动调整,而HADOOP_HEAPSIZE变量已经被弃用了。简化了映射的配置并减少了任务堆大小,因此不需要在任务配置中和Java选项中指定所需的堆大小。已经指定的现有配置不受此更改的影响。
Hadoop 3.0安装
版本:hadoop-3.0.0-beta1
下载地址:http://hadoop.apache.org/rele...
java 1.8
CentOs 6.5
四台节点: node1(NN),node2, node3,node4
1.安装java环境变量
将JDK1.8上传至四台虚拟机,解压
vim /etc/profile
将下面的配置添加到文件中
export JAVA_HOME=/home/jdk1.8.0_151
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
执行 source /etc/profile 生效
执行 java -version检验是否安装成功
2.四台节点配置免密钥登陆
此部分略,因为集群以前配置过,再次就不重复配置,百度即可
3.Hadoop安装配置
将Hadoop安装包hadoop-3.0.0-beta1.tar.gz上传至node1节点 /usr/local/ 目录下。
解压:
tar -zxvf hadoop-3.0.0-beta1.tar.gz
设置环境变量:
vim /etc/profile
添加
export HADOOP_HOME=/usr/local/hadoop-3.0.0-beta1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
同步到各个节点:
scp /etc/profile root@node2:/etc/
scp /etc/profile root@node3:/etc/
scp /etc/profile root@node4:/etc/
配置生效:source /etc/profile
接下来先在安装目录下创建几个我们需要的目录:
安装目录:/usr/local/hadoop-3.0.0-beta1/
mkdir hdfs,mkdir tmp,mkdir /hdfs/name,mkdir /hdfs/data
修改hadoop配置文件:
cd /usr/local/hadoop-3.0.0-beta1/etc/hadoop/
workers
添加节点信息 vim workers
node2
node3
node4
core-site.xml
添加配置项 vim core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.0.0-beta1/tmp</value>
</property>
hdfs-site.xml
添加配置项 vim hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop-3.0.0-beta1/hdfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>/usr/local/hadoop-3.0.0-beta1/hdfs/data</value>
</property>
mapred-site.xml
添加配置项 vim mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.admin.user.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>
</property>
yarn-site.xml
添加配置项 vim yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
hadoop-env.sh
添加配置项 vim hadoop-env.sh
export JAVA_HOME=/home/jdk1.8.0_151
start-dfs.sh
注意目录:
cd /usr/local/hadoop-3.0.0-beta1/sbin
添加配置项 vim start-dfs.sh
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
添加权限用户,根据各自集群用户角色自定义填写,本人用的是root用户
stop-dfs.sh
注意目录:
cd /usr/local/hadoop-3.0.0-beta1/sbin
添加配置项 vim stop-dfs.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=root
YARN_NODEMANAGER_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
接下来将node1节点上配置好的Hadoop文档,同步到其他节点
scp -r /usr/local/hadoop-3.0.0-beta1 root@node2:/usr/local/
scp -r /usr/local/hadoop-3.0.0-beta1 root@node3:/usr/local/
scp -r /usr/local/hadoop-3.0.0-beta1 root@node4:/usr/local/
至此Hadoop集群配置步骤完成
验证:
cd /usr/local/hadoop-3.0.0-beta1/sbin
执行:./start-dfs.sh
进入集群UI :
地址:node1:9870
记得配置hosts映射文件
各位在启动集群时,注意观察日志,日志信息很有作用,如报错,我们可根据错误信息进行排查
以上则证明Hadoop集群以初步搭建完毕,其中还有其它参数可以配置,欢迎大家进行分享和交流
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。