Hadoop环境搭建
Hadoop简介
HDFS
工作机制
组件介绍
-
NameNode
NameNode用于存储、生成文件系统的元数据。运行一个实例。
-
SecondaryNameNode
SecondaryNamenode是Namenode的一个热备,合并NameNode的edit logs到fsimage文件中。
-
DataNode
DataNode用于存储实际的数据,将自己管理的数据块上报给NameNode ,运行多个实例。
Yarn
工作机制
组件介绍
1. ResourceManager
ResourceManager 负责集群资源统一管理和计算框架管理,主要包括调度与应用程序管理。
2. NodeManager
NodeManager节点资源管理监控和容器管理,RM是系统中将资源分配给各个应用的最终决策者。
3. AppMaster
AppMaster各种计算框架的实现(例如MRAppMaster)向ResourceManager申请资源,通知NodeManager管理相应的资源。
4. Container
Container YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU等。
Hadoop安装
0)准备环境
Centos 7主机(版本自定,建议使用Linux 7)
配置JDK环境
1. 下载JDK解压包并上传到/opt/software目录
#下载Linux x64 Compressed Archive(jdk-8u241-linux-x64.tar.gz)根据系统版本选择位数
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html#license-lightbox
2. 解压文件
tar -zxvf jdk-8u241-linux-x64.tar.gz -C /opt/apps
3. 配置环境变量(jdk-8u241-linux-x64是你对应的jdk解压目录)
#给文件夹重命名
mv /opt/apps/jdk-8u241-linux-x64 /opt/apps/jdk
#切换你刚才解压的jdk目录
cd /opt/apps
#配置环境变量
vim /etc/profile
#自定义环境变量 start
#java path start
export JAVA_HOME=/opt/apps/jdk
export CLASS_PATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
4. 测试
安装Hadoop并配置环境变量
1. 下载安装包并上传到/opt/software目录
下载地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/
建议选择2.9.2版本,直到链接
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
2. 解压并重命名
#解压
tar -zxvf /opt/software/hadoop-2.9.2.tar.gz -C /opt/apps
#重命名
mv /opt/software/hadoop-2.9.2 /opt/software/hadoop
3. 配置环境变量
#配置环境变量
vim /etc/profile
#HADOOP_HOME start
export HADOOP_HOME=/opt/apps/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4. 测试
hadoop version
1)Hadoop单节点部署
1. 修改/opt/apps/hadoop-2.9.2/etc/hadoop/hadoop-env.sh
#设置为jdk所在路径
export JAVA_HOME=/opt/apps/jdk1.8.0_152
2. wordcount(单词统计)案例
#切换到Hadoop安装目录
cd opt/apps/hadoop
#新建input文件夹
mkdir input
#拷贝配置文件到刚才创建的文件夹
cp etc/hadoop/*.xml input
#运行mapreduce程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
#查看结果
cat output/*
2)Hadoop伪分布式部署
先切换至Hadoop安装目录
1. 配置 etc/hadoop/core-site.xml:
#命令
vim etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 关闭权限认证 -->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
2.配置 etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3. 配置免密登入
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
4. 格式化NameNode
hdfs namenode -format
5. 启动HDFS
[root@localhost sbin]# start-dfs.sh
#查看是否启动成功 使用jps命令
[root@localhost sbin]# jps
92017 DataNode
97031 NameNode
92214 SecondaryNameNode
6. 配置 etc/hadoop/mapred-site.xml
:
#没有该文件就使用复制一个
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
#修改配置文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name> <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
7. 配置 etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
8. 启动Yarn
start-yarn.sh
9. 使用jps验证服务是否启动
[root@localhost Hadoop]# jps
92017 DataNode
116388 ResourceManager
97031 NameNode
102823 RunJar
92214 SecondaryNameNode
116749 Jps
116511 NodeManager
10. 关闭hdfs
stop-dfs.sh
11. 关闭yarn
stop-yarn.sh
3)Hadoop集群部署(待续)
Hadoop使用
1. 常见Shell命令
1.1 示例
#HDFS创建input目录
dfs -mkdir input
#显示目录列表
dfs -ls
2. 组件端口
2.1 HDFS
#默认50070端口
http://localhost:50070/
2.2 Yarn
#默认8088端口
http://localhost:8088/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C79NKQrA-1616302665749)(assets/img/image-20200305000701705.png)]
错误记录
1. 错误截图
1.1 hdfs不能写入数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Us4G0KNp-1616302665750)(assets/img/image-20200307203424683.png)]
在core-site.xml中设置
<!--指定操作用户-->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>