在阿里云和腾讯云的轻量应用服务器上搭建Hadoop集群

阿里云,服务器,轻量,应用 · 浏览次数 : 3

小编点评

**内容生成时需要带简单的排版** **1. 确保内容格式正确** * 每个内容格式应该用“”或“”包裹起来。 * 每个内容格式应该以“”或“”结尾。 * 每个内容格式应该以“\n”或“\r”换行。 **2. 使用排版格式化内容** * 可以使用“\n”或“\r”换行。 * 可以在内容之间使用“”或“”包裹起来。 * 使用“\t”空格来对内容进行缩进。 **3. 添加排版格式化指令** * 在内容开始时使用“\n”或“\r”换行。 * 在内容结束时使用“\n”或“\r”换行。 * 使用“\t”空格来对内容进行缩进。 **4. 考虑使用表格或列表** * 表格可以帮助你将多个内容以一行排列。 * 列表可以帮助你将多个内容以一行排列。 * 使用“\n”或“\r”换行和“\t”空格可以帮助你创建表格或列表。 **5. 添加标题** * 标题可以帮助你创建一个主体的格式。 * 使用“\n”或“\r”换行和“\t”空格可以帮助你添加标题。 **示例** ``` 标题:My Title 内容:这是My内容。 内容:这是My内容。 内容:这是My内容。 ``` **注意** * 排版格式化指令应该与内容格式一起使用。 * 每个内容格式应该用“ ”或“ ”包裹起来。 * 每个内容格式应该以“ ”或“ ”结尾。

正文

引入

本文在两台2核2g的云服务器上搭建了Hadoop集群,两台云服务器分别是阿里云(hjm)和腾讯云(gyt),集群部署规划如下:

hjm gyt
HDFS NameNode\SecondaryNameNode\DataNode DataNode
YARN ResourceManager\NodeManager NodeManager

经实验,目前可以正常实现文件上传下载,但跑mapreduce程序还出现服务器资源不够的情况

搭建过程

新增用户

useradd hujinming
passwd hujinming

配置用户sudo权限

vim /etc/sudoers

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL

下面新增一行

hujinming ALL=(ALL) NOPASSWD:ALL

创建目录并更改权限

在/opt 目录下创建 module、software 文件夹

mkdir /opt/module
mkdir /opt/software

切换到root用户下,修改 module、software 文件夹的所有者和所属组均为hujinming用户

chown hujinming:hujinming /opt/module
chown hujinming:hujinming /opt/software

查看 module、software 文件夹的所有者和所属组

ll

安装JDK

  • 用xftp工具将jdk导入到opt目录下面的software文件夹下面
  • 解压jdk到opt/module目录下
tar -zxvf jdk-8u212-linux.x64.tar.gz -C /opt/module/
  • 配置jdk环境变量

    • 新建/etc/profile.d/my_env.sh 文件
    sudo vim /etc/profile.d/my_env.sh
    
    • 添加如下内容
    #JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    export PATH=$PATH:$JAVA_HOME/bin
    
    • 保存后退出,source 一下/etc/profile 文件,让新的环境变量 PATH 生效
    source /etc/profile
    
    • 测试jdk是否安装成功
    java -version
    

安装hadoop

  • xftp传输

  • 解压安装到/opt/module下面

  • 将hadoop添加到环境变量

    • 获取hadoop安装路径

      pwd
      
    • 打开/etc/profile.d/my_env.sh 文件

      sudo vim /etc/profile.d/my_env.sh
      
    • 在 my_env.sh 文件末尾添加如下内容:

      #HADOOP_HOME
      export HADOOP_HOME=/opt/module/hadoop-3.1.3
      export PATH=$PATH:$HADOOP_HOME/bin
      export PATH=$PATH:$HADOOP_HOME/sbin
      
    • 保存退出,让修改后的文件生效

    • 测试是否安装成功

服务器IP映射

  • 修改主机名
vim /etc/hostname

分别把两台服务器的名字改成hjm和gyt,这里以gyt举例,直接在hostname文件上输入

gyt
  • 改映射文件
vim /etc/hosts

在linux中键入ifconfig命令可以查看内网ip。在两台服务器中,填写自己的私网,访问别人的填写公网,这里以gyt为例,gyt的公网IP是175.178.236.48,内网IP是10.0.12.1。这里要注意一点,阿里云在hosts文件中已经将本地IP映射成了一串英文,把这行信息删掉再进行上面的操作

47.115.207.108 hjm
10.0.12.1 gyt
  • 在客户端电脑(默认windows)配置映射

    因为在客户端电脑进行hadoop的操作时,两台机子会产生通信,他们通信时发送的网络请求url是gyt或者hjm,这在客户端电脑是无法识别的,所以要将gyt和hjm都映射为他们的公网IP

    • windows + R

    • 输入drivers,回车

    • 进入etc文件

    • 编辑hosts文件(都是公网IP)

      175.178.236.48 gyt
      47.115.207.108 hjm
      

ssh免密登录

分别要配置4种免密登录:

  • hjm -> gyt
  • gyt -> hjm
  • hjm -> hjm
  • gyt -> gyt

注意切换对应用户操作。先cd到~/.ssh,生成公钥和私钥

ssh-keygen -t rsa

这里以gyt -> hjm或hjm -> hjm为例:

ssh-copy-id hjm

修改配置文件

cd到$HADOOP_HOME/etc/hadoop目录

core-site.xml

<configuration>
 <!-- 指定 NameNode 的地址 -->
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://hjm:8020</value>
 </property>
 <!-- 指定 hadoop 数据的存储目录 -->
 <property>
 <name>hadoop.tmp.dir</name>
 <value>/opt/module/hadoop-3.1.3/data</value>
 </property>
 <!-- 配置 HDFS 网页登录使用的静态用户为 root -->
 <property>
 <name>hadoop.http.staticuser.user</name>
 <value>hujinming</value>
 </property>
</configuration>

hdfs-site.xml

<configuration>
<!-- nn web 端访问地址-->
<property>
 <name>dfs.namenode.http-address</name>
 <value>hjm:9870</value>
 </property>
<!-- 2nn web 端访问地址-->
 <property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>hjm:9868</value>
 </property>
</configuration>

yarn-site.xml

<configuration>
 <!-- 指定 MR 走 shuffle -->
 <property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
 </property>
 <!-- 指定 ResourceManager 的地址-->
 <property>
 <name>yarn.resourcemanager.hostname</name>
 <value>hjm</value>
 </property>
 <!-- 环境变量的继承 -->
 <property>
 <name>yarn.nodemanager.env-whitelist</name>
 
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
 </property>
</configuration>

mapred-site.xml

<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
 <property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>

workers

hjm
gyt

去服务器上启动对应端口

  • 用各自的服务器对双方暴露所有的端口
  • 同时,对公网暴露9864、9866、9870、9868端口

问题与解决

  1. ./sbin/start-dfs.sh 开启NameNode 和 DataNode 守护进程报错:

    Starting namenodes on [hjm]
    ERROR: Attempting to operate on hdfs namenode as root
    ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
    Starting datanodes
    ERROR: Attempting to operate on hdfs datanode as root
    ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
    Starting secondary namenodes [hjm]
    ERROR: Attempting to operate on hdfs secondarynamenode as root
    ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
    

    解决方法:

    在hjm上的start-dfs.sh和stop-dfs.sh上增加如下几行:

    HDFS_DATANODE_USER=hujinming
    HADOOP_SECURE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=hujinming
    HDFS_SECONDARYNAMENODE_USER=hujinming
    

    在hjm上的start-yarn.sh和stop-yarn.sh上增加如下几行:

    YARN_RESOURCEMANAGER_USER=hujinming
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=hujinming
    
  2. 报错hjm: ERROR: Cannot set priority of namenode process 23214,没有启动NameNode和SecondaryNameNode

​ 解决方法:

​ 在两台服务器的/etc/hosts中,填写自己的私网,访问别人的填写公网

  1. 找不到NameNode和SecondaryNameNode

​ 解决方法:

​ 把所有节点logs和data删掉,重新格式化namenode,在hjm机子上,执行下面命令:

hdfs namenode -format
  1. 客户端(windows)识别不了hjm和gyt

​ 解决方法:改windows下面的主机名映射

  1. 配置WebUI可跨域?

​ 解决方法:在两台服务器的core-site.xml加入下面代码

        <!--web console cors settings-->
        <property>
            <name>hadoop.http.filter.initializers</name>
            <value>org.apache.hadoop.security.HttpCrossOriginFilterInitializer</value>
        </property>
        <property>
            <name>hadoop.http.cross-origin.enabled</name>
            <value>true</value>
        </property>
        <property>
            <name>hadoop.http.cross-origin.allowed-origins</name>
            <value>*</value>
        </property>
        <property>
            <name>hadoop.http.cross-origin.allowed-methods</name>
            <value>*</value>
        </property>
        <property>
            <name>hadoop.http.cross-origin.allowed-headers</name>
            <value>X-Requested-With,Content-Type,Accept,Origin</value>
        </property>
        <property>
            <name>hadoop.http.cross-origin.max-age</name>
            <value>1800</value>
        </property>
  1. 没有足够的副本数量?

​ 解决方法:还得看DataNode的数量。因为目前只有2台设备,最多也就2个副本,HDFS默认是3个副本,只有节点数的增加到10台时,副本数才能达到10。详细请看https://www.yii666.com/article/664023.html

  1. hadoop脚本启动时,错误: ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain?

​ 解决方法:在master主机的slaves文件中删除localhost即可。详细请看https://blog.csdn.net/Mr_ZNC/article/details/80700652

  1. HDFS的webui界面上传下载文件,出现卡死情况?

​ 解决方法:暴露服务器所有端口给对方

与在阿里云和腾讯云的轻量应用服务器上搭建Hadoop集群相似的内容:

在阿里云和腾讯云的轻量应用服务器上搭建Hadoop集群

引入 本文在两台2核2g的云服务器上搭建了Hadoop集群,两台云服务器分别是阿里云(hjm)和腾讯云(gyt),集群部署规划如下: hjm gyt HDFS NameNode\SecondaryNameNode\DataNode DataNode YARN ResourceManager\Node

利用Docker、云服务器、mongodb搭建自己的测试平台

准备一个云服务器 购买一个云服务器,在阿里云,腾讯云上购买即可。 然后创建一个实例,安装Linux操作系统,我安装的是CentOS。 记住账号和密码,可以使用ssh远程登录即可。 搭建测试环境 Docker是一个轻量级的虚拟机,可以使用Docker下载一个Docker里面包含你想要的环境的镜像 比如

[转帖]实测:云RDS MySQL性能是自建的1.6倍

https://www.cnblogs.com/zhoujinyi/p/16392223.html 1. 摘要 基于之前写的「云厂商 RDS MySQL 怎么选」的文章,为了进一步了解各云厂商在RDS MySQL数据库性能上的差异,本文将对自建MySQL、阿里云、腾讯云、华为云和AWS 的 RDS

基于阿里云服务实现短信验证码功能

## 前言: 阿里云短信服务是一项基于云计算和大数据技术的企业级短信平台服务。它能够为企业和开发者提供高可用、高性能、高稳定性的短信发送服务,可以快速地将各类业务通知、验证码、营销推广等信息发送给用户。在我们经常登录一些系统或者APP时候,经常会遇到其他登录登录方式——短信验证码登录。这也是我前一段

Crossplane - 比 Terraform 更先进的云基础架构管理平台?

👉️URL: https://crossplane.io/ 📝Description: 将云基础架构和服务组成自定义平台 API 简介 在 11 月的 KCD 上海现场,听了一场阿里云的工程师关于他们自己的多云基础架构管理工具的介绍,前边的引言部分有介绍到 Terraform,还有另一款竞品就是

阿里云开发者社区有奖征文活动,期待您出文相助

和阿里云开发者社区的合作曾经是园子的收入来源之一,但现在合作机会越来越少了,今年好不容易等到一次合作机会,就是这次的有奖征文活动 ——「寻找热爱技术创作的你:写下你在技术探中的实践和思考」,详见活动公告 这次征文合作分2期,第1期需要完成保底提交50篇符合要求的文章才能拿到收入,第2期按实际提交的文

[转帖]看了阿里云云解析DNS,涨见识了

https://www.jianshu.com/p/8354e647cf71 在学习这篇文章前,只知道DNS就是做域名解析的,查到域名对应的ip就结束了。没成想惊呆了,DNS还有这么大的规模这么低的时延要求。 阿里云DNS是一个复杂的巨型分布式系统。依托云计算丰富的计算和存储资源和技术,阿里云在全球

阿里云边缘容器云帮助AI推理应用快速落地

近日,阿里云技术专家徐若晨在全球分布式云大会上,分享了《边缘容器云助力AI推理高效落地》的主题演讲,分享了阿里云边缘容器云如何助力开发者实现更快速的AI推理应用的迭代和部署。此外,他还分享了边缘AI推理应用在实际业务中的应用案例。 终端算力上移 云端算力下沉 客户在边缘部署时面对的挑战包括:首先,构

【必看!】阿里云推出QWen-7B和QWen-7b-Chat,开放免费商用!

阿里云最近发布了两款大型开源模型QWen-7B和QWen-7b-Chat,这两款模型的参数规模达到了70亿,用户可以在Hugging Face和ModelScope上免费使用。尽管大型模型的热度近期有所下降,但阿里云选择开源模型来赢得用户的支持,并保持自身在竞争中的优势。这一举措也引起了人们的关注,因为不开源可能会导致信息泄露的风险。通过开源模型,阿里云既能满足用户需求,又能保持技术竞争力。

一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏

在现代云计算环境中,自动化部署已经成为一项重要的任务。Terraform,作为HashiCorp公司的一款开源工具,以其强大的基础设施即代码(IaC)能力,使得我们能够轻松管理和部署各种云资源。 阿里云资源编排服务(Resource Orchestration Service,ROS)是一种简单易用