不看就亏系列!这里有完整的 Hadoop 集群搭建教程,和最易懂的 Hadoop 概念!| 附代码...


作者 | chen_01_c

责编 | Carol

来源 | CSDN 博客

封图 | CSDN付费下载于视觉中国

hadoop介绍

Hadoop 是 Lucene 创始人 Doug Cutting,根据 Google 的相关内容山寨出来的分布式文件系统和对海量数据进行分析计算的基础框架系统,其中包含 MapReduce 程序,hdfs 系统等![它受到最先由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发。]

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计:HDFS 和mapreduce

HDFS:为海量数据提供存储

MapReduce: 为海量数据提供了计算cluster:集群

LB:负载均衡

LVS SLB HAPROXY,nginx

HA:高可用

MHA,keepalived,hearebeat

HPC、Hadoop:大批量的计算辅助存储和运算

什么是分布式:分散的

Hadoop的集群优点

Hadoop是一个能够对大量数据进行分布式处理的软件框架。Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。

Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。

Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度

Hadoop 还是可伸缩的,能够处理 PB 级数据。

PB级别的数据换算成G?

IPB=1024TB

1TB=1024G

Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用。

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

  • 高可靠性:hadoop 按位存储和处理数据的能力值得人们信赖

  • 高扩展性:节点比较多,方便计算和分配数据。

什么是节点?

节点是一个术语,代指一类设备.他们可以是主机(pc),服务器,也可以是构成传输网络的交换机,路由器,防火墙等等.

高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

raid 容错性是什么意思,raid几没有容错性?raid 几有容错性。

低成本:与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低

注意:hadoop框架开发语言:java,在linux上运行效果比较理想。

官网:http://hadoop.apache.org/

关于hadoop的相关概念

1、分布式存储:

linux存储有哪些?

答:NFS, NAS, HDFS,MFS

命名空间

namespace:在分布式存储系统中,分散在不同节点中的数据可能属于同一个文件,为了组织众多的文件,把文件可以放到不同的文件夹中,文件夹可以一级一级的包含。我们把这种组织形式称为命名空间(namespace)。命名空间管理着整个服务器集群中的所有文件。命名空间的职责与存储真实数据的职责是不一样的。负责命名空间职责的节点称为主节点(master node),负责存储真实数据职责的节点称为从节点(slave node)。

主从节点:

主节点负责管理文件系统的文件结构,从节点负责存储真实的数据,合称为主从式结构(master-slaves)。

用户操作的时候,也应该是先和主节点打交道, 查询数据在那些从节点上, 然后再从从节点读取数据。有的时候为了加快用户的访问速度,会把整个命名空间信息都放在内存当中、当存储文件越多时,我们主节点就需要越多的内存空间。

打开一个文件是先加载到哪里?

:内存

我们为什么用笔记本打不开一个2T大小的文件?

答:内存太小

2、Block

在从节点存储数据时,有的原始数据文件可能很大,有的可能很小,大小不一的文件不容易管理,那么可以抽象出一个独立的存储文件单位,称为块(block)。

问题:如果我的硬盘有500G,现在还剩200G ,但是我创建文件的时候提示我硬盘空间不足?

答:一般情况是因为inode号不足

3、容灾

数据存放在集群中,可能因为网络原因或者服务器硬件原因造成访问失败,最好采用副本(replication)机制,把数据同时备份到多台服务器中,这样数据就安全了,数据丢失或者访问失败的概率就小了。

4、异地容灾?

答:不同的地域,构建一套或者多套相同的应用或者数据库,起到灾难后立刻接管的作用

在 hadoop 中,分布式存储系统称为 HDFS(hadoop distributed file system)。其中,主节点称为名字节点(namenode),从节点称为数据节点(datanode)

流程

1:首先,客户端请求查看数据,请求先访问namenode

2:nomenode根据你的需求,告诉你数据存储在那些datanode上

3:客户端直接和从节点联系,获取数据

分布式计算

对数据进行处理时,我们会把数据读取到内存中进行处理。如果我们对海量数据进行处理,比如数据大小是 100GB,我们要统计文件中一共有多少个单词。要想把数据都加载到内存中几乎是不可能的,称为移动数据。

那么是否可以把程序代码放到存放数据的服务器上呢?因为程序代码与原始数据相比,一般很小,几乎可以忽略的,所以省下了原始数据传输的时间了。现在,数据是存放在分布式文件系统中,100GB 的数据可能存放在很多的服务器上,那么就可以把程序代码分发到这些服务器上,在这些服务器上同时执行,也就是并行计算,也是分布式计算。这就大大缩短了程序的执行时间。我们把程序代码移动数据节点的机器上执行的计算方式称为移动计算。

分布式计算需要的是最终的结果,程序代码在很多机器上并行执行后会产生很多的结果,因此需要有一段代码对这些中间结果进行汇总。Hadoop中的分布式计算一般是由两阶段完成的。

第一阶段负责读取各数据节点中的原始数据,进行初步处理,对各个节点中的数据求单词数。然后把处理结果传输到第二个阶段,对个节点结果进行汇总,产生最终结果。

在hadoop中,分布式计算部分称为MapReduce

MapReduce 是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)“和"Reduce(归约)”,和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。

分布式计算角色

主节点:作业节点(jobtracker)

从节点:任务节点(tasktracker)

在任务节点当中,运行第一阶段的代码称为map任务(map task ) ,运行第二阶段代码称为 reduce任务(reduce task)

名词解释:

1)hadoop : apache 开源的分布式框架

2)HDFS:hadoop的分布式文件系统

3)NameNode: Hadoop HDFS 元数据主节点服务器,负责保存datenode文件存储元数据信息,这个服务器时单点的。

4) obtracker : hadoop的map/reduce调度器,负责与任务节点通信分配计算任何并跟踪任务进度,这个服务器也是单点的。

5)DataNode : Hadoop的数据节点,负责存储数据

6)tasktracker: hadoop的调度程度,负责map和reduce的任务的启动和执行

hadoop集群搭建

1)环境

配好IP,关闭iptables, 关闭selinux,配置hosts

[root@ chenc01 ~]# service iptables stop
[root@ chenc01 ~]# setenforce 0
[root@ chenc01 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.61 chenc01
10.0.0.62 chenc02
10.0.0.63 chenc03

2)创建普通用户

三台服务器上都要创建普通用户,hadoop,配置密码:123456

[root@ chenc01 ~]# useradd -u 8000 hadoop ; echo 123456 | passwd --stdin hadoop
更改用户 hadoop 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

3) 设置namenode

设置namenode能够无密钥登录另外两台服务器

[root@ chenc01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f1:7c:f6:6c:81:f5:a6:2a:74:d1:f2:95:50:38:ad:6f root@chenc01.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|              +. |
|             + . |
|        .    .= .|
|         +  o+.o.|
|        S o ++o.o|
|          .o.o.E |
|         . .  *  |
|          .  o   |
|           ..    |
+-----------------+
[root@ chenc01 ~]# ssh-copy-id  root@10.0.0.62
The authenticity of host '10.0.0.62 (10.0.0.62)' can't be established.
RSA key fingerprint is 9b:57:b9:86:84:90:a4:4b:44:3e:18:9f:8a:29:6f:e5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.62' (RSA) to the list of known hosts.
root@10.0.0.62's password: 
Now try logging into the machine, with "ssh 'root@10.0.0.62'", and check in:.ssh/authorized_keysto make sure we haven't added extra keys that you weren't expecting.[root@ chenc01 ~]# ssh-copy-id  root@10.0.0.63
The authenticity of host '10.0.0.63 (10.0.0.63)' can't be established.
RSA key fingerprint is 9b:57:b9:86:84:90:a4:4b:44:3e:18:9f:8a:29:6f:e5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.63' (RSA) to the list of known hosts.
root@10.0.0.63's password: 
Now try logging into the machine, with "ssh 'root@10.0.0.63'", and check in:.ssh/authorized_keysto make sure we haven't added extra keys that you weren't expecting.
# 测试(是否能登录成功
[root@ chenc01 ~]# ssh 10.0.0.62
Last login: Fri Nov 29 17:15:15 2019 from 10.0.0.1

4)安装jdk

[root@ chenc01 ~]# rpm -ivh jdk-8u131-linux-x64_.rpm 
Preparing...                ########################################### [100%]1:jdk1.8.0_131           ########################################### [100%]
Unpacking JAR files...tools.jar...plugin.jar...javaws.jar...deploy.jar...rt.jar...jsse.jar...charsets.jar...localedata.jar...
# 修改/etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131/
export JAVA_BIN=/usr/java/jdk1.8.0_131/bin/
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
# 加载
[root@ chenc01 ~]# source /etc/profile
# 查看java版本
[root@ chenc01 ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

问题:source 在数据库里还可以用来做什么?

答:导入

5)在另外两个节点安装java/jdk

[root@ chenc02 ~]# rpm -ivh jdk-8u131-linux-x64_.rpm 
Preparing...                ########################################### [100%]1:jdk1.8.0_131           ########################################### [100%]
Unpacking JAR files...tools.jar...plugin.jar...javaws.jar...deploy.jar...rt.jar...jsse.jar...charsets.jar...localedata.jar...
# 修改/etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131/
export JAVA_BIN=/usr/java/jdk1.8.0_131/bin/
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
# 加载
[root@ chenc02 ~]# source /etc/profile
# 查看java版本
[root@ chenc02 ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

6)安装namenode

Hadoop 安装目录:/home/hadoop/hadoop-3.13 使用 root 帐号将 hadoop-3.1.3.tar.gz 上传到服务器,并且放到/home/hadoop下!

  • 创建dfs和tmp

[root@ chenc01 ~]# su - hadoop
[hadoop@ chenc01 ~]$ mkdir -p /home/hadoop/dfs/name /home/hadoop/dfs/data /home/hadoop/tmp
[hadoop@ chenc01 ~]$ rz
[hadoop@ chenc01 ~]$ whoami 
hadoop
[hadoop@ chenc01 ~]$ ls
dfs  hadoop-3.1.3.tar.gz  tmp
  • 解压

[hadoop@ chenc01 ~]$ tar xvf hadoop-3.1.3.tar.gz
[hadoop@ chenc01 ~]$ cd hadoop-3.1.3
[hadoop@ chenc01 hadoop-3.1.3]$ ll
total 200
drwxr-xr-x 2 hadoop hadoop   4096 2019-09-12 12:46 bin
drwxr-xr-x 3 hadoop hadoop   4096 2019-09-12 10:51 etc
drwxr-xr-x 2 hadoop hadoop   4096 2019-09-12 12:46 include
drwxr-xr-x 3 hadoop hadoop   4096 2019-09-12 12:46 lib
drwxr-xr-x 4 hadoop hadoop   4096 2019-09-12 12:46 libexec
-rw-rw-r-- 1 hadoop hadoop 147145 2019-09-04 17:31 LICENSE.txt
-rw-rw-r-- 1 hadoop hadoop  21867 2019-09-04 17:31 NOTICE.txt
-rw-rw-r-- 1 hadoop hadoop   1366 2019-09-04 17:31 README.txt
drwxr-xr-x 3 hadoop hadoop   4096 2019-09-12 10:51 sbin
drwxr-xr-x 4 hadoop hadoop   4096 2019-09-12 13:08 share
[hadoop@ chenc01 hadoop-3.1.3]$ cd /home/hadoop/hadoop-3.1.3/etc/hadoop/
[hadoop@ chenc01 hadoop]$ pwd
/home/hadoop/hadoop-3.1.3/etc/hadoop
[hadoop@ chenc01 hadoop]$ ls
hadoop-env.sh           # java的环境变量
yarn-env.sh             # 制定yarn框架的Java运行环境
slaves                  # 指定datanode数据存储服务器
core-site.xml           # hadoop-web界面路径
hdfs-site.xml           # 文件系统的配置文件
mapred-site.xml         # mapreducer 任务配置文件
yarn-site.xml           # yarn框架配置,主要一些任务的启动位置
  • 修改文件

[hadoop@ chenc01 hadoop]$ vim hadoop-env.sh
exprot JAVA_HOME=/usr/java/jdk1.8.0_13
[hadoop@ chenc01 hadoop]$ vim yarn-env.sh
JAVA_HOME=/usr/java/jdk1.8.0_131
[hadoop@ chenc01 hadoop]$ vim slaves
chenc02
chenc03

备注:这个是hadoop的核心配置,这里需要配置两属性, fs.default.name 配置hadoop的HDFS系统命令,位置为主机的9000端口, hadoop.tmp.dir 配置haddop的tmp目录的根位置。

[hadoop@ chenc01 hadoop]$ vim core-site.xml<configuration>
<property><name>fs.defaultFS</name><value>hdfs://chenc01:9000</value>
</property><property><name>io.file.buffer.size</name><value>131072</value>
</property><property><name>hadoop.tmp.dir</name><value>file:/home/hadoop/tmp</value><description>Abase for other tmporary directries.</description>
</property>
</configuration>

备注:HDFS主要的配置文件, dfs.http.address配置了hdfs的http的访问位置;

dfs.replication 配置文件的副本,一般不大于从机个数。

[hadoop@ chenc01 hadoop]$ vim hdfs-site.xml<configuration>
<property>
<configuration>
<property><name>dfs.namenode.secondary.http-address</name><value>chenc01:9000</value>
</property><property><name>dfs.namenode.name.dir</name><value>file:/home/hadoop/dfs/name</value>
</property><property><name>dfs.datanode.data.dir</name><value>file:/home/hadoop/dfs/data</value>
</property><property><name>dfs.replication</name><value>2</value>
</property><property><name>dfs.webhdfs.enabled</name><value>true</value>
</property>
</configuration>

备注:这个是mapreduce任务配置文件,mapreduce.framework.name 属性下配置yarn,

mapred.map.tasks和mapred.reduce.tasks 分别为map和reduce 的任务数。同时指定hadoop历史服务器hsitoryserver

我们可以通过historyserver查看mapreduce的作业记录,比如用了多少个map,用了多少个reduce,作业启动时间,作业完成时间。默认清空下,hadoop历史服务器是没有启动的,我们需要通过命令来启动。

[hadoop@ chenc01 ~]$ /home/hadoop/hadoop-3.1.3/sbin/mr-jobhistory-daemon.sh  start historyserver
/home/hadoop/hadoop-3.1.3/etc/hadoop/hadoop-env.sh: line 39: exprot: command not found
WARNING: Use of this script to start the MR JobHistory daemon is deprecated.
WARNING: Attempting to execute replacement "mapred --daemon start" instead.
WARNING: /home/hadoop/hadoop-3.1.3/logs does not exist. Creating.
[hadoop@ chenc01 hadoop]$ vim mapred-site.xml
<configuration>
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property><property><name>mapreduce.jobhistory.address</name><value>chenc01:10020</value>
</property><property><name>mapreduce.jobhistory.webapp.address</name><value>chenc01:19888</value>
</property>
</configuration>

备注:yarn框架的配置,主要是一些任务的启动位置

[hadoop@ chenc01 hadoop]$ vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<proetry><name>yarn.nodemanager.aux-service</name><value>mapreduce_shuffle</value>
</proetry><proetry><name>yarn.nodemanager.uax-service.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapreduced.ShuffleHandle</value>
</proetry>
<proetry><name>yarn.resoucemanager.address</name><value>chenc01:8032</value>
</proetry>
<proetry><name>yarn.resourcemanager.shceduler.address</name><value>chenc01:8030</value>
</proetry>
<proetry><name>yarn.resourcemanager.resource-tracker.address</name><value>chenc01:8031</value>
</proetry><proetry><name>yarn.resourcemanager.admin.address</name><value>chenc01:8033</value>
</proetry><proetry><name>yarn.resourcemanager.webapp.address</name><value>chenc01:8088</value>
</proetry>
</configuration>
  • datanode配置文件生成

[hadoop@ chenc01 hadoop]$ scp -r /home/hadoop/hadoop-3.13 hadoop@chenc02:~/
The authenticity of host 'chenc02 (10.0.0.62)' can't be established.
RSA key fingerprint is 9b:57:b9:86:84:90:a4:4b:44:3e:18:9f:8a:29:6f:e5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'chenc02,10.0.0.62' (RSA) to the list of known hosts.
hadoop@chenc02's password: 
/home/hadoop/hadoop-3.13: No such file or directory
[hadoop@ chenc01 hadoop]$ scp -r /home/hadoop/hadoop-3.13 hadoop@chenc03:~/
The authenticity of host 'chenc03 (10.0.0.63)' can't be established.
RSA key fingerprint is 9b:57:b9:86:84:90:a4:4b:44:3e:18:9f:8a:29:6f:e5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'chenc03,10.0.0.63' (RSA) to the list of known hosts.
hadoop@chenc03's password: 
/home/hadoop/hadoop-3.13: No such file or directory
  • namenode格式化数据:

一般第一次的时候需要初始化,之后就不需要了

[hadoop@ chenc01 ~]$ cd /home/hadoop/hadoop-3.1.3/bin/
[hadoop@ chenc01 bin]$ ./hdfs namenode -format
2020-03-04 16:05:17,247 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 393 bytes saved in 0 seconds .
2020-03-04 16:05:17,268 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2020-03-04 16:05:17,277 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid = 0 when meet shutdown.
2020-03-04 16:05:17,278 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at xinsz08-1/192.168.1.18
************************************************************/
  • 查看是否生成相应的内容

[hadoop@ chenc01 ~]$ cd /home/hadoop/dfs/
[hadoop@ chenc01 dfs]$ ls
data  name
[hadoop@ chenc01 dfs]$ tree
.
├── data
└── name└── current├── fsimage_0000000000000000000├── fsimage_0000000000000000000.md5├── seen_txid└── VERSION3 directories, 4 files
  • 配置免密要登录

[hadoop@ chenc01 dfs]$ ssh-keygen
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:
cf:4f:4e:5e:8a:4f:7e:86:e9:f6:8c:8f:77:b9:69:50 hadoop@chenc01.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|               E |
|        S     .  |
|         o   .   |
|          o +oo .|
|           X+*+oo|
|          .+@*=+.|
+-----------------+
[hadoop@ chenc01 dfs]$ ssh-copy-id chenc02
[hadoop@ chenc01 dfs]$ ssh-copy-id chenc01 # 对自己也做一次
[hadoop@ chenc01 dfs]$ ssh-copy-id chenc03

备注:方便后期复制文件或者启动服务。因为namenode启动时候,会链接到datanode上启动对应的服务。

  • 启动hdfs

[hadoop@ chenc01 dfs]$ /home/hadoop/hadoop-3.1.3/etc/hadoop报错:2020-03-04 16:16:45,394 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable解答:http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 下载对应版本
解压,覆盖hadoop下/lib/native/
上传之后解压:
[hadoop@ chenc01 ~]$ cd hadoop-3.1.3/lib/native/
[hadoop@ chenc01 native]$ ls
examples          libhadoop.so        libhdfs.a         libnativetask.a
libhadoop.a       libhadoop.so.1.0.0  libhdfs.so        libnativetask.so
libhadooppipes.a  libhadooputils.a    libhdfs.so.0.0.0  libnativetask.so.1.0.0
[hadoop@ chenc01 native]$ rz
[hadoop@ chenc01 native]$ tar xf hadoop-native-64.tar 
[hadoop@ chenc01 native]$ ls
examples              libhadoop.so.1.0.0  libnativetask.a
hadoop-native-64.tar  libhadooputils.a    libnativetask.so
libhadoop.a           libhdfs.a           libnativetask.so.1.0.0
libhadooppipes.a      libhdfs.so
libhadoop.so          libhdfs.so.0.0.0

覆盖完之后重启

关闭之后在启动

[hadoop@ chenc01 ~]$ cd /home/hadoop/hadoop-3.1.3/etc/hadoop/
[hadoop@ chenc01 hadoop]$ ../../sbin/stop-dfs.sh
  • 启动yarn

也就是说我们要启动 分布式计算

[hadoop@ chenc01 hadoop]$ ../../sbin/start-yarn.sh
[hadoop@ chenc01 hadoop]$ ../../sbin/start-all.sh
  • 启动jobhistory

[hadoop@ chenc01 hadoop]$ ../../sbin/mr-jobhistory-daemon.sh start historyserver
  • Web查看集群状态

浏览器输入http://10.0.0.61:8088/cluster

如果本文对你有帮助,请点右下角“在看”告诉我们!

《原力计划【第二季】- 学习力挑战》正式开始!即日起至 3月21日,千万流量支持原创作者!更有专属【勋章】等你来挑战

推荐阅读:时间复杂度的表示、分析、计算方法……一文带你看懂时间复杂度!
Linux 会成为主流桌面操作系统吗?
识别率惊人的 GitHub 口罩检测 | 原力计划
西二旗大厂复工记
智能合约编写之Solidity的基础特性
Javascript函数之深入浅出递归思想,附案例与代码!
真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据科学家是个性感的工作?我信你个鬼!

数据科学家40%是个吸尘器&#xff0c;40%是个清洁工&#xff0c;剩下20%是个算命的。作者 | Jingles译者 | 香槟超新星&#xff0c;责编 | 夕颜出品 | CSDN&#xff08;ID:CSDNnews&#xff09;根据《哈佛商业评论》的说法&#xff0c;数据科学家是21世纪最性感的工作。在现在这…

深入搜索引擎原理

之前几段工作经历都与搜索有关&#xff0c;现在也有业务在用搜索&#xff0c;对搜索引擎做一个原理性的分享&#xff0c;包括搜索的一系列核心数据结构和算法&#xff0c;尽量覆盖搜索引擎的核心原理&#xff0c;但不涉及数据挖掘、NLP等。文章有点长&#xff0c;多多指点~~ 一…

印度版的“大众点评”如何将 Food Feed 业务从 Redis 迁移到 Cassandra

Zomato 是一家食品订购、外卖及餐馆发现平台&#xff0c;被称为印度版的“大众点评”。目前&#xff0c;该公司的业务覆盖全球24个国家&#xff08;主要是印度&#xff0c;东南亚和中东市场&#xff09;。本文将介绍该公司的 Food Feed 业务是如何从 Redis 迁移到 Cassandra 的…

利用Packer自定义镜像创建容器集群

阿里云容器服务Kubernetes集群支持CentOS操作系统&#xff0c;在绝大多数情况下可以满足客户的要求。但是有些客户由于业务系统对操作系统依赖比较高&#xff0c;希望定制化一些操作系统参数&#xff0c;则可以用自定义镜像来创建Kubernetes集群。 创建自定义操作系统镜像有两…

“远程”、“协作”风靡之际,你对TA知晓多少?

作者|晶少 转载|CSDN博客 2.4亿人在线使用文档协作无延宕…… 6万名武汉中小学生实力打造“远程课堂”活学高效…… 疫情以来&#xff0c;“远程”、“协作”持续大热&#xff0c;此局毋庸置疑。 根据QuestMobile最新发布的《2020中国移动互联网“战役”专题报告》显示&am…

蚂蚁金服OceanBase性价比是传统数据库的十倍

200名数据库领域从业三年以上的会员投票和专业的评委评选&#xff0c;在如此严苛的条件之下&#xff0c;蚂蚁金服金融级分布式关系数据库OceanBase 2.0依然获得了专家评审团的一致青睐&#xff0c;荣获2019中国数据库技术大会的“年度最佳创新产品”奖。 蚂蚁金服资深总监韩鸿源…

战疫内外,京东智联云如此“一鸣惊人”!

作者|晶少 转载|CSDN博客 鼠年春节&#xff0c;一场疫情突如其来地打破了人们平静的生活&#xff1b;但在滨州&#xff0c;一款名为“疫情助手”的上线软件却为滨州市民的疫情生活带来“雪中送炭”的丝丝温情&#xff0c;细微知著中人们深深感受到了京东诠释而来的“ABCDE”技…

亿级消息系统的核心存储:Tablestore发布Timeline 2.0模型

背景 互联网快速发展的今天&#xff0c;社交类应用、消息类功能大行其道&#xff0c;占据了大量网络流量。大至钉钉、微信、微博、知乎&#xff0c;小至各类App的推送通知&#xff0c;消息类功能几乎成为所有应用的标配。根据场景特点&#xff0c;我们可以将消息类场景归纳成三…

SLS机器学习最佳实战:日志聚类+异常告警

0.文章系列链接 SLS机器学习介绍&#xff08;01&#xff09;&#xff1a;时序统计建模SLS机器学习介绍&#xff08;02&#xff09;&#xff1a;时序聚类建模SLS机器学习介绍&#xff08;03&#xff09;&#xff1a;时序异常检测建模SLS机器学习介绍&#xff08;04&#xff09;…

大数据成长之路:谈谈那些必须学习的Linux基础知识

作者| Roy瑞士责编| Carol封图| CSDN│下载于视觉中国这里主要介绍学习大数据过程中用到的Linux基础知识&#xff0c;现在主攻的方向是大数据开发&#xff0c;欢迎大家共同交流。环境推荐安装VMware虚拟机并安装CentOS操作系统&#xff0c;具体资源的下载和安装可以查到&#x…

数据可用不可见!揭秘蚂蚁区块链摩斯安全计算平台

“数据安全”与“隐私泄漏”制约数字经济长期发展 在新的商业智能时代&#xff0c;已形成广泛的共识&#xff1a;数据是最基础的生产资料&#xff0c;各个行业与企业对于数据的利用也步入成熟期。可见的未来&#xff0c;数据利用的深度和广度将进一步升级&#xff0c;进入跨机…

如何与亦敌亦友的 null 说拜拜?大神原来是这么做的!

作者| 沉默王二责编| Carol封图| CSDN│下载于视觉中国从 10 年前我开始写第一行 Java 代码至今&#xff0c;一直觉得 null 在 Java 中是一个最特殊的存在&#xff0c;它既是好朋友&#xff0c;可以把不需要的变量置为 null 从而释放内存&#xff0c;提高性能&#xff1b;它又是…

K8s中Pod健康检查源代码分析

了解k8s中的Liveness和Readiness Liveness: 表明是否容器正在运行。如果liveness探测为fail&#xff0c;则kubelet会kill掉容器&#xff0c;并且会触发restart设置的策略。默认不设置的情况下&#xff0c;该状态为success. Readiness: 表明容器是否可以接受服务请求。如果re…

CSE:阿里在线应用如何演进成Serverless架构

Cloud Service Engine&#xff0c;简称CSE&#xff0c;是中间件部门研发的面向通用Serverless计算的中间件产品&#xff0c;目标是具备AWS Lambda的各种优势&#xff0c;同时可以解决AWS Lambda的关键技术缺陷。 AWS Lambda如果用于核心业务&#xff0c;可能会有以下缺陷&…

郫都区计算机学校,成都郫县好升学的计算机学校有哪些

【郫县好一、成都郫县希望1.成都郫县希望职业学校/招生代码&#xff1a;512632.成都郫县希望职业学校/学校简介&#xff1a;成都郫县希望职业学校学校是由郫都区教育局批准成立的&#xff0c;由希望集团投资创办的一所全日制、专业化的民办中等职业学校, 由郫都区教育局主管。学…

技术大佬:今年还学Python,傻了吧? 网友:就你敢说!

随着AI的兴起&#xff0c;Python彻底火了。据Stack Overflow调研报告&#xff1a;Python的月活用户已超越了Java、成为第一&#xff0c;全民Python已为“大势所趋”。那么&#xff0c;程序员有必要追捧Python吗&#xff1f;Python的真香是真香吗&#xff1f;技术大佬&#xff1…

基于Tablestore的Wifi设备监管系统架构实现

Wifi设备监管 某知名跨国公司&#xff0c;在全球范围内拥有大量园区&#xff0c;园区内会有不同部门的同事在一起办公。每个园区内都要配备大量的Wifi设备从而为园区同事提供方便的上网服务。因此&#xff0c;集团需要一套完善的监管系统维护所有的Wifi设备。 公司通过监管系…

聊聊安卓折叠屏给交互设计和开发带来的变化

很多年前&#xff0c;前端同学都觉得PC端的适配&#xff08;兼容处理&#xff09;难&#xff0c;都认为移动端的时代适配会容易得多&#xff0c;也无需考虑那么多的事情。事实并非如此&#xff0c;移动端的时代同样面临着各种适配的处理。特别是刘海机的出现&#xff0c;前端需…

你以为这样写代码很6,但我看不懂

来源 | 沉默王二责编| Carol封图| CSDN│下载于视觉中国为了提高 Java 编程的技艺&#xff0c;作者最近在 GitHub 上学习一些高手编写的代码。下面这一行代码&#xff08;出自大牛之手&#xff09;据说可以征服你的朋友&#xff0c;让他们觉得你写的代码很 6&#xff0c;来欣赏…

在闲鱼,我们如何用Dart做高效后端开发?

背景 像阿里其他技术团队以及业界的做法一样&#xff0c;闲鱼的大多数后端应用都是全部使用java来实现的。java易用、丰富的库、结构容易设计的特性决定了它是进行业务开发的最好语言之一。后端应用中数据的存储、访问、转换、输出虽然都属于后端的范畴&#xff0c;但是其中变…