鼠鼠接下来将更新一系列自己在学习大数据开发过程中收集的资源、和自己的总结、以及面经答案、LeetCode刷题分析题解。
首先是大数据开发基础篇 环境搭建、组件面试题等
其次是更新大数据开发面经的java面试基础
最后更新一个大数据开发离线数仓的实战项目,自己写入简历的项目。
关注不迷路,学习要进步!!!!!!
集群规划
node01 | node02 | node03 | |
---|---|---|---|
角色 | 主节点 | 从节点 | 从节点 |
NameNode | √ | ||
DataNode | √ | √ | √ |
ResourceManager | √ | ||
NodeManager | √ | √ | √ |
SecondaryNameNode | √ | ||
Historyserver | √ |
上传安装包到node01
解压到指定目录
tar -zxvf /bigdata/soft/hadoop-3.3.3.tar.gz -C /bigdata/server/
创建软链接
cd /bigdata/server
ln -s hadoop-3.3.3/ hadoop
常见的Hadoop软件目录说明
目录 | 作用 | 说明 |
---|---|---|
bin/ | Hadoop最基本的管理脚本和使用脚本 | hdfs: 文件上传命令 hadoop文件管理基础命令 yarn: 资源调度相关 mapred: 程序运行, 启动历史服务器 |
etc/ | Hadoop配置文件的目录 | core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml |
include/ | 对外提供的编程库头文件 | 对外提供的编程库头文件(具体动态库和静态库在lib目录中), 这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序 |
lib/ | 动态库和静态库 | 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。 |
libexec/ | shell配置文件 | 各个服务对用的shell配置文件所在的目录, 可用于配置日志输出、启动参数(比如JVM参数)等基本信息。 |
sbin/ | Hadoop管理命令 | 主要包含HDFS和YARN中各类服务的启动/关闭脚本 |
share/ | 官方自带示例 | Hadoop各个模块编译后的jar包所在的目录 |
Hadoop配置文件修改
Hadoop安装主要就是配置文件的修改,一般在主节点进行修改
,完毕后scp分发给其他各个从节点机器
。
hadoop-env.sh
文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME
是必须设置的,即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前的执行环境当成远程服务器
。
vim hadoop-env.sh
54行的JAVA_HOME的设置
export JAVA_HOME=/bigdata/server/jdk1.8
在文件末尾添加如下内容
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
core-site.xml
hadoop的核心配置文件,有默认的配置项core-default.xml
。
core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值。
cd /bigdata/server/hadoop/etc/hadoop/
vim core-site.xml在文件的configuration的标签中添加以下内容:
<property> <name>fs.defaultFS</name> <value>hdfs://node01:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/bigdata/data/hadoop</value> </property> <!-- 设置HDFS web UI用户身份 --> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <!-- 整合hive --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property>
hdfs-site.xml
HDFS的核心配置文件,有默认的配置项hdfs-default.xml
。
hdfs-default.xml与hdfs-site.xml的功能是一样的,如果在hdfs-site.xml里没有配置的属性,则会自动会获取hdfs-default.xml里的相同属性的值。
cd /bigdata/server/hadoop/etc/hadoop/
vim hdfs-site.xml
<!-- 指定secondarynamenode运行位置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>node02:50090</value> </property>
mapred-site.xml
MapReduce的核心配置文件,有默认的配置项mapred-default.xml
。
mapred-default.xml与mapred-site.xml的功能是一样的,如果在mapred-site.xml里没有配置的属性,则会自动会获取mapred-default.xml里的相同属性的值。
cd /bigdata/server/hadoop/etc/hadoop/
vim mapred-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property>
yarn-site.xml
YARN的核心配置文件,有默认的配置项yarn-default.xml
。
yarn-default.xml与yarn-site.xml的功能是一样的,如果在yarn-site.xml里没有配置的属性,则会自动会获取yarn-default.xml里的相同属性的值。
cd /bigdata/server/hadoop/etc/hadoop/
vim yarn-default.xml
<!-- 指定YARN的主角色(ResourceManager)的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>node01</value> </property> <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 是否将对容器实施物理内存限制 --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!-- 是否将对容器实施虚拟内存限制。 --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 开启日志聚集 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置yarn历史服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://node02:19888/jobhistory/logs</value> </property> <!-- 保存的时间7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
workers
workers文件里面记录的是集群主机名。主要作用是配合一键启动脚本如start-dfs.sh、stop-yarn.sh用来进行集群启动。这时候workers文件里面的主机标记的就是从节点角色所在的机器。
cd /bigdata/server/hadoop/etc/hadoop/
vim workers
node01 node02 node03
同步hadoop软件包到node02和node03
scp -r hadoop-3.3.3/ node02:$PWD
scp -r hadoop-3.3.3/ node03:$PWD
在node02节点配置软链接
ln -s hadoop-3.3.3/ hadoop
在node03节点配置软链接
ln -s hadoop-3.3.3/ hadoop
[所有节点]
配置环境变量
vim /etc/profile
export HADOOP_HOME=/bigdata/server/hadoop
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
Hadoop集群启动
启动方式
要启动Hadoop集群,需要启动HDFS
和YARN
两个集群。
注意:首次启动HDFS时,必须在主节点node01
对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。
hadoop namenode -format
手动单个节点启动
在主节点node01
启动namenode
cd /bigdata/server/hadoop/bin
./hdfs --daemon start namenode
在node02
启动secondarynamenode
cd /bigdata/server/hadoop/bin
./hdfs --daemon start secondarynamenode
在所有节点
启动datanode
cd /bigdata/server/hadoop/bin
./hdfs --daemon start datanode
查看进程情况
jpg
netstat -ntlp
其中hdfs的web端口: node01:9870已经可以正常访问
在主节点node01
启动ResouceManager
cd /bigdata/server/hadoop/bin
./yarn --daemon start resourcemanager
在所有节点
启动Nodemanager
cd /bigdata/server/hadoop/bin
./yarn --daemon start nodemanager
如果想要停止某个节点上某个角色,只需要把命令中的
start
改为stop
即可。
一键脚本启动
如果配置了etc/hadoop/workers
和ssh免密登录
,则可以使用程序脚本启动所有Hadoop两个集群的相关进程,在主节点所设定的机器上执行。
hdfs:/bigdata/server/hadoop/sbin/start-dfs.sh
yarn:/bigdata/server/hadoop/sbin/start-yarn.sh
停止脚本
hdfs:/bigdata/server/hadoop/sbin/stop-dfs.sh
yarn:/bigdata/server/hadoop/sbin/stop-yarn.sh
完整的一键启动hdfs和yarn脚本
start-all.sh: 启动所有的hdfs和yarn的脚本
stop-all.sh: 停止所有的hdfs和yarn的脚本
启动后的效果
集群Web访问UI
hdfs: http://node01:9870
yarn:http://node01:8088
MapReduce JobHistory
JobHistory用来记录已经finished的mapreduce运行日志,日志信息存放于HDFS目录中,默认情况下没有开启此功能,需要在mapred-site.xml
中配置并手动启动。
修改mapred-site.xml
cd /bigdata/server/hadoop/etc/hadoop/
vim mapred-site.xml
<property> <name>mapreduce.jobhistory.address</name> <value>node02:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node02:19888</value> </property>
scp mapred-site.xml node02: P W D s c p m a p r e d − s i t e . x m l n o d e 03 : PWD scp mapred-site.xml node03: PWDscpmapred−site.xmlnode03:PWD
在node02节点启动JobHistory
cd /bigdata/server/hadoop/bin
./mapred --daemon start historyserver
访问web管理界面
http://node02:19888/jobhistory
运行演示程序
在hdfs创建一个目录:
hdfs dfs -mkdir /input
上传文件到hdfs的/input目录
hdfs dfs -put start-all.sh /input
运行示例程序
hadoop jar /bigdata/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output
http://node02:19888/jobhistory`
运行演示程序
在hdfs创建一个目录:
hdfs dfs -mkdir /input
上传文件到hdfs的/input目录
hdfs dfs -put start-all.sh /input
运行示例程序
hadoop jar /bigdata/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output