凡科轻站小程序模板,河南省建造师网官网,开发网站的费用属于什么费用,网络seo啥意思文章目录 一、预备知识1.1 Hadoop 发行版本1.2 部署方式 二、预备条件2.1 环境准备2.2 创建新用户(可选)2.3 配置 SSH 无密码登录2.4 下载 Hadoop2.5 编辑 hadoop-env.sh 脚本2.6 编辑 dfs 和 yarn 脚本 三、单节点模式部署3.1 官方使用案例3.2 查看运行结果 四、伪分布模式部署… 文章目录 一、预备知识1.1 Hadoop 发行版本1.2 部署方式 二、预备条件2.1 环境准备2.2 创建新用户(可选)2.3 配置 SSH 无密码登录2.4 下载 Hadoop2.5 编辑 hadoop-env.sh 脚本2.6 编辑 dfs 和 yarn 脚本 三、单节点模式部署3.1 官方使用案例3.2 查看运行结果 四、伪分布模式部署4.1 修改配置文件4.2 格式化 Hadoop(首次)4.3 启动 Hadoop4.4 检查 Hadoop 状态4.5 停止 Hadoop 五、常见问题5.1 启动 start-dfs.sh 脚本报错5.2 启动脚本时拒绝访问 参考资料 一、预备知识
1.1 Hadoop 发行版本
Hadoop 的发行版本有
Apache Hadoop官方版本由 Apache 软件基金会维护。Hortonworks Data Platform (HDP)基于 Apache Hadoop 的企业级发行版提供了额外的工具和组件如 Hive、HBase、Spark 等适合企业用户。Cloudera Data Platform (CDP)Cloudera 的企业级解决方案整合了 Hortonworks 和 Cloudera 的产品提供更全面的功能和支持。
其中Apache Hadoop 最适合新手入门学习。
1.2 部署方式
部署方式主要有以下三种 单节点模式所有 Hadoop 组件运行在同一台机器上。这比较适合适合开发和测试。 伪分布模式在单台机器上模拟分布式环境Hadoop 各组件在不同的进程中运行。这比较适合适合小规模测试和开发。 完全分布式模式在多台机器上部署 Hadoop 集群每个节点上运行不同的 Hadoop 组件。这适合生产环境要求对集群进行详细配置。
二、预备条件
2.1 环境准备 安装 JDK。在 Hadoop Java Versions - Hadoop - Apache Software Foundation 查看Hadhoop 推荐的 Java 版本最佳版本为 JDK 8 。 配置 SSH 免密登录。如果要使用可选的启动和停止脚本则必须安装 ssh 并且运行 sshd 才 能使用管理远程 Hadoop 守护进程的 Hadoop 脚本。此外建议还安装 pdsh 以更好地管理ssh资源。 $ sudo apt-get install ssh
$ sudo apt-get install pdsh注意pdsh 的远程命令类型为 rsh 建议修改成 ssh。
2.2 创建新用户(可选)
创建一个新用户用户名和密码设置为 hadoop
$ sudo useradd -m hadoop -s /bin/bash
$ sudo passwd hadoop为了避免权限造成的问题为 hadoop 用户增加管理员权限。
$ sudo adduser hadoop sudo2.3 配置 SSH 无密码登录
Hadoop 在启动时需要通过 SSH 连接到各个节点包括本地主机。因此我们需要配置无密码登录。
简单地介绍已下 SSH 登录原理
密钥对生成用户在本地生成一对密钥一个私钥和一个公钥。私钥保留在本地公钥可以共享给任何希望访问的服务器。公钥复制用户将公钥添加到目标服务器的 ~/.ssh/authorized_keys 文件中。身份验证过程当用户尝试通过 SSH 连接到服务器时服务器会发送一条随机消息给用户。用户使用自己的私钥对该消息进行加密然后将其返回给服务器。服务器使用存储在 authorized_keys 文件中的相应公钥来解密收到的消息。如果解密成功且消息匹配身份验证通过用户被允许访问。
(1) 确保 SSH 服务正在运行
首先确保 SSH 服务在您的 Ubuntu 系统上运行。
# 检查 SSH 服务的状态
$ sudo systemctl status ssh# 如果服务未运行 启动 SSH 服务
$ sudo systemctl start ssh(2) 生成 SSH 密钥对
使用 ssh-keygen 在 ~/.ssh 目录下生成 SSH 密钥对。
# 输入密码 hadoop 才能登录。因此我们需要实现无密登录
ssh localhost# 若没有该目录执行一次 ssh localhost 后会自动生成
$ cd ~/.ssh/ # 生成密钥对
$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:HGuMfZmVK09WBr0fPJ3Kj5xYnUuChwl08TlaSq5HN0k hadoopubuntu
The keys randomart image is:
---[RSA 2048]----
| .o. |
| . ..oo |
| o ..oE.o|
| o.|
| . S *Oo.|
| . .oO.*..|
| . .* * .|
| .. o |
| |
----[SHA256]-----
其中id_rsa 为 私钥 id_rsa.pub 为公钥。
(3) 将公钥添加到目标服务器的authorized_keys
使用 ssh-copy-id 命令可以方便地将公钥复制到目标主机的 authorized_keys 文件中
# 方式一
$ ssh-copy-id -i ~/.ssh/id_rsa.pub localhost# 方式二
$ cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keysauthorized_keys 是一个文本文件位于用户的 ~/.ssh/ 目录下。它用于存储被授权可以无密码访问该用户帐户的 SSH 公钥。将公钥添加到 authorized_keys 文件中以允许无密码访问。
确保 ~/.ssh/authorized_keys 的权限设置正确
chmod 0600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh(4) 测试 SSH 连接
在终端中尝试通过 SSH 连接到 localhost 和主机名
$ ssh ubuntu
The authenticity of host ubuntu (127.0.1.1) cant be established.
ECDSA key fingerprint is SHA256:Joilwgpgx1Mc2K3XnL1iszZY/EKGltbMG6B28luBY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ubuntu (ECDSA) to the list of known hosts.
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.15.0-107-generic x86_64)* Documentation: https://help.ubuntu.com* Management: https://landscape.canonical.com* Support: https://ubuntu.com/advantage240 updates can be applied immediately.
123 of these updates are standard security updates.
To see these additional updates run: apt list --upgradableYour Hardware Enablement Stack (HWE) is supported until April 2025.The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.其中 ubuntu 是为特定计算机设置的主机名用于标识这台机器。
2.4 下载 Hadoop
在 Apache Download Mirrors 下载合适的 Hadoop 版本。如果官网下载太慢可以考虑 hadoop/common (huaweicloud.com) 网站。
执行以下命令下载 Hadoop 安装包。
# 下载安装包
$ wget --no-check-certificate https://repo.huaweicloud.com/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz# 解压安装包到指定目录
$ sudo tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/# 将文件夹名改为hadoop
$ cd /usr/local
$ sudo mv ./hadoop-3.3.6/ ./hadoop # 修改文件权限
$ sudo chown -R hadoop ./hadoop 输入如下命令来检查 Hadoop 是否可用成功则会显示 Hadoop 版本信息
$ cd /usr/local/hadoop
$ ./bin/hadoop version2.5 编辑 hadoop-env.sh 脚本
编辑 hadoop-env.sh 脚本 设置必要的一些参数。
# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
export JAVA_HOME/usr/local/jdk/jdk1.8.0_421查看 Hadoop 脚本的使用文档
$/usr/local/hadoop-3.3.6/bin/hadoop2.6 编辑 dfs 和 yarn 脚本
在 sbin/start-dfs.sh 和 sbin/stop-dfs.sh 脚本中添加以下参数
HDFS_DATANODE_USERroot
HDFS_NAMENODE_USERroot
HDFS_SECONDARYNAMENODE_USERroot
HDFS_DATANODE_SECURE_USERhdfs在 sbin/start-yarn.sh 和 sbin/stop-yarn.sh 脚本中添加以下参数
YARN_RESOURCEMANAGER_USERroot
YARN_NODEMANAGER_USERroot三、单节点模式部署
默认情况下Hadoop配置为以非分布式模式运行作为单个Java进程。这对于调试很有用。
3.1 官方使用案例
将 input 文件夹中的所有文件作为输入筛选当中符合正则表达式 dfs[a-z.] 的单词并统计出现的次数最后输出结果到 output 文件夹中
$ cd /usr/local/hadoop$ mkdir input$ cp etc/hadoop/*.xml input$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output dfs[a-z.]3.2 查看运行结果
查看运行结果
$ cat output/*
1 dfsadmin
1 dfs.replication
1 dfs.permissions四、伪分布模式部署
Hadoop 可以在单节点上以伪分布式的方式运行Hadoop 进程以分离的 Java 进程来运行。
在 /usr/local/hadoop/etc/hadoop/ 中伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。
4.1 修改配置文件
etc/hadoop/core-site.xml:
configuration!-- 指定 Hadoop 文件系统的默认文件系统 URI --propertynamefs.defaultFS/namevaluehdfs://localhost:9000/value/property!-- 指定 Hadoop 运行时生成的临时文件的存储目录 --propertynamehadoop.tmp.dir/namevaluefile:/usr/local/hadoop/tmp/valuedescriptionAbase for other temporary directories./description/property
/configurationetc/hadoop/hdfs-site.xml
configuration!-- 指定了 HDFS NameNode 存储其元数据的目录 --propertynamedfs.namenode.name.dir/namevaluefile:/usr/local/hadoop/tmp/dfs/name/value/property!-- 指定了 HDFS DataNode 存储实际数据块的目录 --propertynamedfs.datanode.data.dir/namevaluefile:/usr/local/hadoop/tmp/dfs/data/value/property!-- 定义 HDFS 文件的默认副本数量 --propertynamedfs.replication/namevalue1/value/property!-- 定义 HDFS 是否启用权限检查 --propertynamedfs.permissions/namevaluefalse/value/property!-- 控制 Secondary NameNode次要 NameNode执行 HDFS 检查点checkpoint的周期 --propertynamefs.checkpoint.period/namevalue3000/value/property
/configurationetc/hadoop/mapred-site.xml:
configurationpropertynamemapreduce.framework.name/namevalueyarn/value/propertypropertynamemapreduce.application.classpath/namevalue$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*/value/property
/configurationetc/hadoop/yarn-site.xml:
configurationpropertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/propertypropertynameyarn.nodemanager.env-whitelist/namevalueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME/value/property
/configuration4.2 格式化 Hadoop(首次)
在第一次启动的时候格式化 HDFSHadoop 分布式文件系统。
# 进入 Hadoop 安装目录
$ cd /usr/local/hadoop# 格式化 HDFS
$ bin/hdfs namenode -format后面启动的时候无需格式化。
4.3 启动 Hadoop
(1) 启动 HDFS
$ sbin/start-dfs.sh
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [ubuntu]在成功启动后我们还可以访问 Hadoop Web 界面 http://localhost:9870。 (2) 启动 YARN
启动 YARN。
$ sbin/start-yarn.sh
Starting resourcemanager
Starting nodemanagers在成功启动后我们还可以访问 YARN 界面 http://localhost:8088 。
4.4 检查 Hadoop 状态
使用以下命令检查 Hadoop 服务的状态
# 查看运行 Java 进程
$ jps
5079 ResourceManager
4508 DataNode
4348 NameNode
4782 SecondaryNameNode
5615 Jps
5231 NodeManager此命令将显示当前正在运行的 Java 进程。您应该能够看到如下进程
4.5 停止 Hadoop
$ sbin/stop-dfs.sh
Stopping namenodes on [localhost]
Stopping datanodes
Stopping secondary namenodes [ubuntu]$ sbin/stop-yarn.sh
Stopping nodemanagers
Stopping resourcemanager五、常见问题
5.1 启动 start-dfs.sh 脚本报错
问题描述
$ sudo sbin/start-dfs.sh
Starting namenodes on [ubuntu]
pdshubuntu: ubuntu: rcmd: socket: Permission denied
Starting datanodes
pdshubuntu: localhost: rcmd: socket: Permission denied
Starting secondary namenodes [ubuntu]
pdshubuntu: ubuntu: rcmd: socket: Permission denied
解决方案
(1) 查看 SSH 配置
检查 /etc/ssh/sshd_config 配置文件确保以下基本配置
#
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys如果有更改记得重启 SSH 服务
$ sudo systemctl restart ssh2pdsh 执行命令
pdsh并行分布式 Shell执行远程命令时的默认远程命令类型为 rsh 时 会出现该问题。
# 检查 pdsh 的远程命令类型
$ pdsh -q -w localhost更改为使用 ssh
# 1. 临时设置
$ export PDSH_RCMD_TYPEssh# 2. 永久设置
$ echo export PDSH_RCMD_TYPEssh ~/.bashrc最后重新加载 ~/.bashrc
$ source ~/.bashrc3不建议的方案
在尝试以上方案后依旧无法启动建议删除 pdsh。
apt-get remove pdsh5.2 启动脚本时拒绝访问
报错信息
$ sudo sbin/start-dfs.sh
Starting namenodes on [ubuntu]
ubuntu: rootubuntu: Permission denied (publickey,password).
Starting datanodes
localhost: rootlocalhost: Permission denied (publickey,password).
Starting secondary namenodes [ubuntu]
ubuntu: rootubuntu: Permission denied (publickey,password).解决方案
不要使用 sudo。事实上在没有使用 sudo 的情况下依旧可以运行我们可以考虑直接为用户增加管理员权限。
参考资料
Apache Hadoop 3.3.6 – Hadoop: Setting up a Single Node Cluster.
hadoop - HDFS_NAMENODE_USER, HDFS_DATANODE_USER HDFS_SECONDARYNAMENODE_USER not defined - Stack Overflow
Hadoop安装教程——单机 / 伪分布式配置-阿里云开发者社区 (aliyun.com)