docker

docker的介绍

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker,可以让开发者将自己的程序以及依赖打包成一个镜像文件,然后可以发布到开源社区中,自己可以用,也可以造福其他人。发布到各种服务器后,都是可以是虚拟化,容器之间都是沙盒(沙盒是沙箱的另一种叫法),相互之间没有影响,可以充分隔离,保证每个沙盒程序都可以不受其他影响,独立运行。他也是可移植的,支持主流操作系统。

沙盒

沙盒是在计算机领域中的一种虚拟技术,多用于计算机安全技术、软件安全,可以让程序在沙盒中运行,如果存在病毒、程序bug或者恶意行为,都只局限于自己的沙盒,不会影响到其他。

docker容器和虚拟机的区别

相同点:docker容器和虚拟机都采用了虚拟的技术
不同点:

docker相对于虚拟机而言,少了虚拟机操作系统这层,少了一层就少了很多资源的浪费,所以docker的效率要高于虚拟机很多。

Docker架构

第一步需要安装docker,第二步小组镜像文件到docker中,第三启动docker容器实例,最后反馈给用户

镜像:image,可以理解成一个系统的镜像文件

容器:container,容器是镜像在运行时的一个状态
image相当于磁盘上的文件,container相当于运行时磁盘上的这个文件,包括内存数据

核心概念

Docker 使用客户端-服务器架构,Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。

Clients 是docker客户端,用来连接docker主机

Host 是docker主机,安装了docker程序机器

Registry 是仓库,用来存储各种打包好的镜像文件

image 是镜像文件

container 是容器,独立运行应用

docker的特性及优点

特点:
文件系统隔离,每个容器运行在一个完全独立的沙盒中
资源隔离,隔离系统资源,比如CPU、内存等,分配到不同的容器中
网路隔离,每个容器运行在自己的网络中,有虚拟的IP地址
日志记录,docker对每个容器都有日志功能
交互式的shell、管理沙盒程序等
优点:
有很多虚拟机的优势,而且某些方面比虚拟机要更优秀
占用的资源也比较少,比如说现在的PC机,可以运行多个docker实例
不需要关心具体的操作系统,只要大型号没有问题就可以。
支持多平台,例如Linux、Windows、Mac
应用比较广发,很多全球知名公司都在用docker
缺点:
对于应用的程序是最有利的,但是不善于处理文件和数据,一般会将文件(日志等),数据库的数据文件,挂载到容器之外

部署docker环境

以下操作是在在 CentOS 上安装 Docker 引擎,若想在其他系统上安装则按照docker安装文档来做

查看版本号

docker只支持Linux 3.10及以上版本,所以在部署之前先查看一下Linux内核版本,查看命令如下:

1
uname -r

查看结果如下:

卸载旧版本docker,避免产生影响

旧版本的 Docker 被称为docker或docker-engine. 如果安装了这些,请卸载它们以及相关的依赖项。

1
2
3
4
5
6
7
8
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

yum如果报告没有安装这些软件包,那也没关系。

的内容/var/lib/docker/,包括图像、容器、卷和网络,都被保留。Docker 引擎包现在称为docker-ce.

升级yum和配置源

在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。

设置存储库
安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库

1
2
3
4
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

在虚拟机中安装docker

这是安装最新版本的docker,一般公司工作都会选用最稳定版本,有很多时候需要知道如何去安装历史版本。
安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:

1
$ sudo yum install docker-ce docker-ce-cli containerd.io

列出并排序您的存储库中可用的版本

1
$ yum list docker-ce --showduplicates | sort -r

安装指定版本的docker

1
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

是代表要按照的版本号

1.安装成功

2.启动服务进行验证
启动docker

1
systemctl start docker

停止docker

1
systemctl stop docker

重启docker

1
systemctl restart docker

查看docker正在运行时的状态

1
systemctl status docker

3.查看docker版本信息

1
docker -v

如果运行正常,代表安装成功.

docker的常用操作

1.查看本地镜像

第一次查询时是没有镜像的,只有拉取之后才有

1
docker images

2.查找指定镜像

1
docker search 名字(如果想限定版本,就加版本号)

3.拉取镜像

1
2
3
4
docker pull 名称(如果需要指定版本,添加版本号)
以Tomcat为例
docker pull tomcat:下载最新版本
docker pull Tomcat:版本号:下载指定版本

4.查看容器

1
2
3

docker ps:查看在运行的
docker ps –a:查看所有的

5.移除容器

1
docker rm 容器id/names

6.启动容器

1
2
3
4
docker start 容器id/names
docker stop :停止容器
docker restart:重启容器

以启动Tomcat为例:

1
docker run --name mytomcat -d -p 8080:8080 734d712b8777

docker run是启动Tomcat
–name是给这个镜像取一个名字,当前名字叫做mytomcat
-d是后台运行,可以不认Tomcat把日志输出到控制,这样控制台可以做其他操作
-p 8080:8080是端口映射,将docker中Tomcat的8080端口,映射到虚拟机的8080端口。第一个8080是虚拟机的端口号,第二个是docker的
最后一个是镜像的id或者名字+标签也可以

7.进入容器内

1
docker exec –it 容器名字/id /bin/bash

docker exec –it:是进入容器,-it等同于-i –t
/bin/bash是命令需要的路径参数

8.补充

exit:从容器中退出
进入容器是需要用-it,-i以交互模式运行虚拟机 –t为容器重新分配一个输入终端(准确的说是一些假的,也叫伪终端)
run中除了-d以外还有-c,run命令执行结束后执行的其他命令,可以让程序自动执行一些命令。
docker logs 容器id/名字

1.实验环境需求

操作系统:CentOS 8操作系统

计算机资源:CPU 1核 0.5GHz 内存 0.5GB 硬盘 10.00GB

2.实验原理

在工程环境中,往往需要在Linux环境下进行Hadoop的安装和部署,但是在一些主流的操作系统如UNIX、Windows上Hadoop也可以很好的运行,在本实验中我们在Linux操作系统中进行Hadoop的相关实验操作,我们使用的Linux操作系统版本是CentOS 8。

在Linux上进行Hadoop的安装部署流程如下:

  1. 安装配置JDK1.7(或更高版本)。Hadoop是用Java编写的程序,Hadoop的编译及MapReduce的运行都需要使用JDK,因此在安装Hadoop前,必须安装JDK1.7或更高版本。

  2. 主机名配置:在大型的Hadoop集群中,往往由成百上千个节点组成,如果通过IP地址对不同节点进行管理,那么集群维护的工作量将会十分繁重,因此在工程环境中,常常通过对每个节点设置唯一的主机名,从而实现对节点进行管理。

  3. SElinux安全配置:CentOS默认启用了SElinux,在网络服务方面权限要求比较严格,因此我们需要对SElinux安全配置进行更改。

  4. SSH(安全外壳协议)免密码登录配置,推荐安装OpenSSH。Hadoop需要通过SSH来启动Slave列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分开集群式和伪分布式)。对于伪分布式,Hadoop会采用与集群相同的处理方式,即按次序启动文件conf/slaves中记载的主机上的进程,只不过在伪分布式中Slave为localhost(即为自身),所以对于伪分布式Hadoop,SSH一样是必需的。

  5. Hadoop核心配置。Hadoop的稳定运行需要依赖于其核心配置文件,因此当上述准备工作就绪后,我们便需要着重进行配置文件编写来实现Hadoop的可靠运行。

3.安装Hadoop环境准备

1.安装配置JDK 1.8

首先查看linux系统版本,安装和Linux系统相同版本的JDK

1
2
3
查看命令
uname -r
3.10.0-1160.el7.x86_64 #在此安装的是x86_64版本的,所以JDK也要安装64位

我们可以在Oracle JDK的官网下载与Linux相应版本的JDK,官网地址为:http://www.oracle.com/technetwork/java/javase/downloads/index.html,下载完成后将压缩包上传到系统中。

上传文件可以使用FinalShell工具,远程连接成功后,直接将软件包拖入某个文件夹下即可上传文件。

在此我将压缩包都放入/usr/software文件夹下,后面不再赘述。

1.首先创建一个工作路径,如下,我是在在/usr目录下建立名为dsy的工作路径

1
mkdir /usr/dsy

2.解压安装包,将下载好的java jdk安装包解压到刚刚创建好的路径中

1
tar -zxvf /usr/software/jdk-8u321-linux-x64.tar.gz -C /usr/dsy

3.配置环境变量

使用vi编辑器打开 ~/.bashrc文件

1
vi ~/.bashrc

配置Java JDK环境变量,在~/.bashrc文件中添加如下内容:

1
2
3
4
export JAVA_HOME=解压的JDK路径
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/tools.jar

添加完成,按Esc键,然后输入“:wq”保存退出。

4.更新环境变量

使用source命令更新环境变量

1
source  ~/.bashrc

5.检查JDK是否配置成功

1
2
java -version
出现版本号说明安装成功

2.主机名配置

1.编辑主机名,使用vi编辑器编辑主机名配置文件

1
vi  /etc/sysconfig/network

修改主机名HOSTNAME为master

1
2
NETWORKING=yes
HOSTNAME=master(修改为实际的主机名master)

更改后的内容会在下次系统重启的时候生效,通过下列命令重新启动系统:

1
reboot

2.IP地址与主机名映射文件配置

通过下列命令使用vi编辑器编辑主机名映射文件hosts文件:

1
vi  /etc/hosts

打开后的文件内容如下所示:

增加主机名与IP地址的映射关系:

1
127.0.0.1 master

检测主机名与IP映射是否配置成功:

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]# ping master -c 4
PING master (127.0.0.1) 56(84) bytes of data.
64 bytes from master (127.0.0.1): icmp_seq=1 ttl=64 time=0.071 ms
64 bytes from master (127.0.0.1): icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from master (127.0.0.1): icmp_seq=3 ttl=64 time=0.055 ms
64 bytes from master (127.0.0.1): icmp_seq=4 ttl=64 time=0.042 ms

--- master ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.042/0.055/0.071/0.010 ms
能够ping通说明配置成功

如果无法进行正常的报文发送,请检查主机名是否配置错误,同时请检查主机名与IP地址映射是否配置正确。

3.SElinux安全配置

CentOS默认启用了SElinux,在网络服务方面权限要求比较严格,因此我们需要将SElinux关闭。

1.首先先打开SElinux配置文件

1
2
3
4
5
6
7
8
9
10
11
12
vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled(需要修改的行)
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

若需要修改的行为“SELINUX=permissive”,则将它修改为“SELINUX=disabled”;若直接为“SELINUX=disabled”,则不需修改。disabled是不可用的意思,编辑完成后保存文件并退出vi编辑器。

2.SElinux配置强制生效

更改后的内容会在下次系统重启的时候生效,为了操作便捷性,我们可以使用下列命令使更改即时生效,而不需要重新启动系统。

1
setenforce 0

4.配置SSH免密码登录

1.生成秘钥,输入下面的命令,生成本机密钥文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost ~]# ssh-keygen -t (通过dsa加密方式对秘钥进行加密)
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): (注:按回车即可)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): (注:按回车即可)
Enter same passphrase again: (注:按回车即可)
Your identification has been saved in /root/.ssh/id_dsa.
(注:生成的私钥文件位置)
Your public key has been saved in /root/.ssh/id_dsa.pub.
(注:生成的公钥文件位置)
The key fingerprint is:
SHA256:yCNMfjTp1RKuqVjUh5B8+pTh3ETf3IaWNcVLV7yzYnU root@localhost.localdomain
The key's randomart image is:
+---[DSA 1024]----+
| ... .o o++|
| ooo+.+ o = o+|
| o=*== o * + +|
| =.+=B.. . . =E|
| =oO S . +|
| o +.. o . |
| . . . . |
| |
| |
+----[SHA256]-----+

查看~/.ssh目录下的文件:

1
ls ~/.ssh

可以看到在~/.ssh目录下已经生成了id_dsa.pub(本机的公钥)和id_dsa(本机的私钥)文件:

2.秘钥分发

把当前节点的公钥文件id_dsa.pub内容输出追加到任意节点的/.ssh/authorized_keys文件的末尾,则在被添加的节点上便可以免密码登录到当前的节点(由于我们是单节点部署,因此直接追加到当前节点的/.ssh/authorized_keys文件中即可),输入命令如下:

1
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

上述命令运行完成后我们再次查看~/.ssh目录下的文件,可以看到已经创建了authorized_keys文件:

3.验证免密码登录是否配置成功

下列命令通过设置的主机名进行连接,可以验证免密码登录是否配置成功:

1
ssh master

一次登录的时候,会询问是否继续连接,输入yes即可进入,当第二次进行连接的时候则不会再出现此提示(***如果无法正常连接,请检查是否完成秘钥分发步骤操作***):

连接成功后,我们需要通过下列命令退出连接:

1
2
3
4
[root@localhost ~]# exit
登出
Connection to master closed.

在Hadoop的安装过程中,配置免密码登录与否是无关紧要的,但是如果不配置免密码登录,每次启动Hadoop都需要输入密码才能登录到集群中的每台机器上,考虑到一般的Hadoop集群往往拥有数百台机器,因此一般来说都会配置集群节点间SSH免密码登录。

4.安装配置Hadoop

Hadoop分别从三个角度将集群中的主机划分为两种角色。从集群管理来讲,将集群中的主机划分为Master和Slave;从HDFS的角度来讲,将集群中的主机划分为NameNode和DateNode(在分布式文件系统中,目录的管理很重要,而NameNode就是目录管理者);从MapReduce的角度来讲,将主机划分为ResourceManager、ApplicationMaster和NodeManager。

Hadoop有官方发行的开源版本,以及CDH等多个商用版本,这里我们主要介绍Hadoop官方发行版的安装方法。可以从以下地址获得Hadoop的官方发行版:

http://www.apache.org/dyn/closer.cgi/Hadoop/core/

Hadoop有三种运行方式:单机模式、伪分布式与完全分布式。乍看之下,前两种方式并不能体现云计算的优势,但是它们便于程序的测试与调试,所以还是很有意义的。安装单机模式的Hadoop无须配置,在这种方式下,Hadoop被认为是一个单独的Java进程,这种方式经常用来调试。安装伪分布式Hadoop的配置过程也很简单,只需要修改几个文件,可以把伪分布式的Hadoop看做只有一个节点的集群。

1. 解压安装文件

解压Hadoop安装文件,将文件解压到/usr/dsy目录下:

1
tar -zxvf /usr/software/hadoop-2.7.7.tar.gz -C /usr/dsy

2.配置Hadoop环境变量

1
vi  ~/.bashrc

在~/.bashrc文件中增加以下内容:

1
2
3
4
(-------------------省略------------------------)
export HADOOP_HOME=/usr/dsy/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$PATH
export PATH=$PATH:$HADOOP_HOME/sbin:$PATH

执行如下命令,更新环境变量:

1
source  ~/.bashrc

通过下列命令验证Hadoop环境变量是否配置成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~]# hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
CLASSNAME run the class named CLASSNAME
or
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jar <jar> run a jar file
note: please use "yarn jar" to launch
YARN applications, not this command.
checknative [-a|-h] check native hadoop and compression libraries availability
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath prints the class path needed to get the
credential interact with credential providers
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
trace view and modify Hadoop tracing settings

Most commands print help when invoked w/o parameters.

如果没有正确输出相关信息,请检查~/.bashrc文件中的Hadoop环境变量是否配置正确,同时请确定是否使用source ~/.bashrc命令更新环境变量配置。

3.编辑Hadoop配置文件

1.打开hadoop-env.sh配置文件进行编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 vi /usr/dsy/hadoop-2.7.7/etc/hadoop/hadoop-env.sh
(-------------------省略------------------------)
# Set Hadoop-specific environment variables here.

# The only required environment variable is JAVA_HOME. All others are
# optional. When running a distributed configuration it is best to
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.

# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}(注:需要对此行内容进行更改,为Hadoop绑定Java运行环境)
# The jsvc implementation to use. Jsvc is required to run secure datanodes
# that bind to privileged ports to provide authentication of data transfer
# protocol. Jsvc is not required if SASL is configured for authentication of
# data transfer protocol using non-privileged ports.
#export JSVC_HOME=${JSVC_HOME}

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}
(-------------------省略------------------------)

在文件中进行下列内容更改,将JAVA_HOME对应的值改成实际的JDK安装目录,编辑完成后保存文件并退出vi编辑器。

1
export  JAVA_HOME=/usr/cx/jdk1.8.0_60

2.打开core-site.xml配置文件进行编辑

1
2
3
4
5
6
7
vi /usr/dsy/hadoop-2.7.7/etc/hadoop/core-site.xml
(-------------------省略------------------------)
<!-- Put site-specific property overrides in this file. -->

<configuration>
(注:需要在此处进行相关内容配置)
</configuration>

在文件中之间增加下列内容,编辑完成保存退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*设置默认的HDFS访问路径*/
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
/*缓冲区大小:io.file.buffer.size默认是4KB*/
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
/*临时文件夹路径设置*/
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/tmp</value>
</property>
/*设置使用hduser用户可以代理所有主机用户进行任务提交*/
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
/*设置使用hduser用户可以代理所有组用户进行任务提交*/
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>

3.打开yarn-site.xml文件进行配置:

1
2
3
4
5
6
7
vi /usr/dsy/hadoop-2.7.7/etc/hadoop/yarn-site.xml
(-------------------省略------------------------)
<configuration>
(注:需要在此处进行相关内容配置)
<!-- Site specific YARN configuration properties -->

</configuration>

在文件中之间增加下列内容,完成后保存文件并退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*设置NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序*/
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
/*设置客户端与ResourceManager的通信地址*/
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
/*设置ApplicationMaster调度器与ResourceManager的通信地址*/
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
/*设置NodeManager与ResourceManager的通信地址*/
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
/*设置管理员与ResourceManager的通信地址*/
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
/* ResourceManager的Web地址,监控资源调度*/
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>

4.复制mapred-site.xml.template文件并重命名为mapred-site.xml

1
cp /usr/dsy/hadoop-2.7.7/etc/hadoop/mapred-site.xml.template /usr/dsy/hadoop-2.7.7/etc/hadoop/mapred-site.xml

5.打开mapred-site.xml文件并对它进行配置

1
2
3
4
5
6
7
vi /usr/dsy/hadoop-2.7.7/etc/hadoop/mapred-site.xml
(-------------------省略------------------------)
<!-- Put site-specific property overrides in this file. -->

<configuration>
(注:需要在此处进行相关内容配置)
</configuration>

在文件中之间增加下列内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*Hadoop对MapReduce运行框架一共提供了3种实现,在mapred-site.xml中通过"mapreduce.framework.name"这个属性来设置为"classic"、"yarn"或者"local"*/
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
/*MapReduce JobHistory Server地址*/
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
/*MapReduce JobHistory Server Web UI访问地址*/
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>

6.创建Hadoop的数据存储目录namenode和datanode

1
2
mkdir -p /hdfs/namenode
mkdir -p /hdfs/datanode

7.使用vi命令打开hdfs-site.xml文件进行配置

1
vi /usr/dsy/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

在文件中之间增加下列内容保存并退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
(-------------------省略------------------------)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>

/*配置SecondaryNameNode地址*/
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
/*配置NameNode的数据存储目录,需要与上文创建的目录相对应*/
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hdfs/namenode</value>
</property>
/*配置DataNode的数据存储目录,需要与上文创建的目录相对应*/
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hdfs/datanode</value>
</property>
/*配置数据块副本数*/
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
/*将dfs.webhdfs.enabled属性设置为true,否则就不能使用webhdfs的LISTSTATUS、LIST FILESTATUS等需要列出文件、文件夹状态的命令,因为这些信息都是由namenode保存的*/
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

</configuration>

8.用vi命令打开slaves文件进行配置(要与我们前文设置的主机名相互一致,否则将会引起Hadoop相关进程无法正确启动)

1
vi /usr/dsy/hadoop-2.7.7/etc/hadoop/slaves

打开文件显示如下:

将文件中的内容更改为下列内容

4.格式化HDFS

通过下列命令格式化HDFS文件系统(***如果格式化失败,会有相关的错误日志输出,根据输出内容进行更改即可***):

1
hadoop namenode -format

5.Hadoop运行及测试

1.启动Hadoop,通过下列命令启动Hadoop

1
start-all.sh

命令运行后的输出内容如下所示:

由输出内容可以看到,每个进程在启动以及运行过程中,会将相关的日志信息记录到日志文件中,因此当进程出现问题时,一个有效的办法就是查看日志文件进行排错处理。

2.查看进程

查看相应的JVM进程确定Hadoop是否配置及启动成功

1
jps

当有以下5个进程启动时,则说明Hadoop已经成功启动,如果某个进程没有启动,则需要查看日志文件确定错误发生的原因:

1
2
3
4
5
6
7
[root@localhost ~]# jps
48784 DataNode(注:HDFS数据存储进程)
52512 Jps
49556 NodeManager(注:任务执行进程)
48613 NameNode(注:HDFS元数据管理进程)
49413 ResourceManager(注:资源管理进程)
49118 SecondaryNameNode(注:HDFS数据检查点进程)

3.Web页面测试

1.当Hadoop成功启动后,我们打开浏览器,输入网址http://master:8088便可以访问任务调度的Web管理页面:

2.当Hadoop成功启动后,我们打开浏览器,输入网址http://master:50070便可以访问HDFS的Web管理页面:

我们在空闲的时候都喜欢看剧来放松自己,我本人也是很喜欢看一些剧和综艺。甚至为了追剧买过腾讯、优酷、芒果…..等各大平台的会员,最后还是需要不断的充钱充钱充钱。为了不再花更多的钱也能让我更好的追剧,我便搜索一些可以免费看剧的方法,这些都是我自己试过之后感觉还可以的包括一些平台,也包括一些其他的方法,希望能够分享给大家。

1
1.大师兄影视

这个软件是我一年前在看见一位大佬推荐后下载的,它的头像如下图所示,就是大师兄(孙悟空)的。

刚开始下载后我的手机就爆出了错误,然后我就去官网(https://dsxys.com/app/)查看说明,下载后将它加入手机白名单,不再出现错误。

大师兄首页有很多分类,包括电影、综艺、连续剧等等,国内国外的都可以看。你不需要注册信息就可以观看各种电视电影,我常用它来看看国内的综艺,它更新的速度也很快。但可能唯一的缺点就是更新的的频繁,也是它在不断修复bug,所以难免会要更新,但是这也不影响我追剧的心情。

1
2.泰剧迷

如果说大师兄是我看国内影视常用的软件,那么泰剧迷就是追海外剧常用的软件。一定是这个这个粉色图标的泰剧迷。

泰剧迷不仅能够看泰剧、还可以追韩剧、日剧、美剧、英剧等,更新速度也是杠杠的,靠它基本能够满足看海外剧的需求。

下载方法如下:

1
3.油猴插件

Tampermonkey(油猴)是一款免费的浏览器插件,通过编写脚本可以让用户直接控制修改网页内容,改善网页体验它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。油猴脚本可以相互分享,安装过油猴后,在Greasemonkey上可以搜索各种各样实用的插件并安装,就可以直接使用别人写好的脚本。

1
安装过程:

一般是在百度上直接搜索油猴就会出现,点进去就会出现各种适合 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox浏览器的版本。

现将chrome浏览器的安装方法演示:

若直接点击安装Tampermonkey可能打开如下

原因是因为这个插件需要在国外的网站上下载,所以我直接将这个插件压缩,放在下面这个地址,如若需要则下载安装:

油猴安装包链接:

https://pan.baidu.com/s/1ZYeI5awD-SuRjasNGOO_OA
提取码:ydfy

下载安装包后直接解压,按照下面的步骤打开chrome扩展程序。

打开扩展程序后,可以直接将.cxr的文件拉入扩展程序中或者按“加载已解压的扩展程序”,选择解压后的文件即可。

安装完油猴后并没有结束,接着进入Greasyfork 网站,在里面搜索“全网VIP视频免费”就可以出现好多插件,选择你想安装的进行安装

当你打开爱奇艺(腾讯视频\优酷\芒果等等),选择你想要看的VIP视频,左侧就会出现如下图所示的多条解析路径。选择一条路径即可,如果解析不出来则换另外一条路径。

推荐插入视频的话可以先让视频上传到YouTube、BilBili等视频网站,这样可以分享链接来插入文章中,更好节约空间,减少出错率。

插入后效果如下:

一、下载安装工具

1.java现在是oracle公司下的产品,我们想要安装java先到官网上下载安装工具。

官网地址:https://www.oracle.com/index.html

2.在上面“支持–>软件下载”,进入下载页面

3.在这个客户下载页面下提供很多软件,我们直接向下滑动找到java,鸡儿找到java jdk,我们需要的就是java jdk.

1
2
3
JDK:java development kit java开发包
JRE:java runtime environment java运行环境
JVM:java virtual machine java虚拟机

4.进入页面显示的JAVA的最新版本,如果需要以前的版本可向下拖动,找到相应版本

5.我现在使用的java8版本的,这已经够用了看自己的电脑是什么系统,选择合适的系统。我的是windows,所以下面我演示的都是关于Windows的安装过程。

1
Windows选择完再继续看下面的,如果操作系统是32位的就选择windows x86下载,64位则选择windows x64下载。

6.点击接受条款,即可解锁下载

二、安装Java

1.先新建一个叫JAVA的文件夹,在JAVA文件夹里面再建一个JDK和JRE的文件夹。

1
2
JDK
JRE

2.打开刚刚下好的安装包,开始安装,下一步,选择要安装的目录。这里我们选择安装在刚刚新建好的JDK文件夹下,点击确定,然后点击下一步

3.安装一段时间后会弹出一个对话框让你再次选择安装路径。这里安装的是一个额外的JRE。我们把它安装在之前新建的JRE文件夹中就好了。

4.进度读完就安装完毕了,点击关闭。

三、JAVA的环境变量配置

安装完成后我们需要进行环境配置才能在任意目录下使用JAVA

1
环境变量的配置方法:

1.打开JDK文件夹,打开bin文件夹,进入到以下页面,复制路径

2.打开控制面板—>高级系统设置—>高级—>环境变量,按上面的步骤找到系统属性菜单。

3.配置JAVA_HOME,新建一个系统变量,变量值为JAVA_HOME,变量值是将上面复制的路径粘贴下来

4.配置path

添加上这一行,并把它上移至第一行

==注意==:

一定要将这一行移至开始,因为当计算机开始检索时会从第一个路径开始,当第一个不是所要文件的路径时,可能会出现报错

5.配置classpath

6.验证

在命令行模式输入以下命令,若没有出错则安装成功

1
2
3
java -version  查看版本
java 运行java
javac 运行javac

一、插入本地图片

插入本地图片时统一将本地图片放在博客文件source/images文件夹下,

若没有在source目录下没有images文件夹则创建。

插入图片也有两种语法可以使用,一种是markdown语法,另一种是html语法。

markdown语法:

1
2
![](images/ddd.jpg)
[]中是图片的提示文字,()里面是图片的地址,例:![pp](images/ddd.jpg)

pp

html语法:

1
2
<img src="images/ddd.jpg">
统一格式为<img src="">,""中间写上图片的地址,若想对这张图片也出现提示文字,则需要在后面添上alt="",例:<img src="images/ddd.jpg" alt="ppp">
ppp

二、插入网络图片

在浏览器上找到自己想要的图片,在新标签页打开图片,鼠标右键点击,找到图片的链接地址,如下(后面带有png、jpg、jpeg后缀是图片格式):

同样插入网络图片也有两种方式:markdown格式和html格式。

1
2
3
4
markdown格式:
![](网络图片地址)
html格式:
<img src="网络图片地址">

markdown

html

若想将插入的图片放大缩小,则需要在添加的图片后面加上长宽或者长宽的比例,如:

1
2
3
<img src="图片地址" width="200" height="300">
或者
<img src="图片地址" width="50%" height="50%">

1.将图片设置长200,宽300

2.将图片的长宽都设置为原来的50%

最近在使用git时又报出来了这样一个错误“OpenSSL SSL_read: Connection was reset, errno 10054”,意思是OpenSSL SSL_read:连接已重置,错误号 10054 ,于是我就上网搜索了有关解决办法,下面的方法是我使用过真是不错的,我将分享给大家,希望能够帮助你们。

1
2
3
4
5
6
7
8
9
10
fatal: unable to access 'https://github.com/Whisper609/Whisper609.github.io.git/': OpenSSL SSL_read: Connection was reset, errno 10054
FATAL {
err: Error: Spawn failed
at ChildProcess.<anonymous> (E:\Whiper609blog\Whisper609\node_modules\hexo-util\lib\spawn.js:51:21)
at ChildProcess.emit (events.js:400:28)
at ChildProcess.cp.emit (E:\Whiper609blog\Whisper609\node_modules\cross-spawn\lib\enoent.js:34:29)
at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12) {
code: 128
}
} Something's wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.html

首先出现这个的原因是网络不稳定而导致的连接超时问题。

1.检查c盘下host文件访问的域名对应的ip是否正确

先在命令行窗口Ping一下github的地址,就可以获得github官网的IP地址

1
2
3
4
5
6
7
8
9
10
11
12
E:\Whiper609blog\Whisper609>ping github.com

正在 Ping github.com [140.82.114.4] 具有 32 字节的数据:
来自 140.82.114.4 的回复: 字节=32 时间=267ms TTL=48
来自 140.82.114.4 的回复: 字节=32 时间=255ms TTL=48
来自 140.82.114.4 的回复: 字节=32 时间=247ms TTL=48
来自 140.82.114.4 的回复: 字节=32 时间=262ms TTL=48

140.82.114.4 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 247ms,最长 = 267ms,平均 = 257ms

然后找到这个“C:\Windows\System32\drivers\etc”路径下的hosts文件,

使用记事本打开对比上面ping的ip地址和记录的IP地址是否一致,一致说明IP地址没有错误,再对上传几次,若是没有用再尝试下面的方法。

1
2
140.82.114.4 github.com
4 × IPv4 github.global.ssl.fastly.net

2.解除ssl限

打开命令行模式,修改设置,解除ssl验证

1
git config --global http.sslVerify "false"

再上传即可。

超星学习通课件下载

​ 最近在学习通上学习的时候,发现自己需要有些课程的课件,但是这些课程里面的课件却不下载,索性在网上找到了一种可行的方法可以下载自己想要的课件。

1
1.登录超星学习通电脑版。

image-20210528104943930

1
2.打开你需要下载的课程的课件

image-20210528105133419

1
3.在空白处鼠标右击,选择“检查”,或者同时按键盘"Fn+F12"键,出现如下界面

image-20210528105455966

1
4.同时按"Ctrl+F"键,在出现的搜索框中输入"objectid",再按回车,找到objectid

image-20210528105739707

1
5.找"objectid"后面引号里的内容,如图复制下来,有几个文件就会有几个objectid。多个文件的话注意选择的Id。

image-20210528110048848

1
2
6.在浏览器打开一个新的页面,输入http://cs.ananas.chaoxing.com/download/上面"objectid"后面引号里的内容,比如这里就是:
http://cs.ananas.chaoxing.com/download/3934680559c726cd2e1a4bcc33caece0

image-20210528111041572

下载原理:

超星提供了 imghttps://d0.ananas.chaoxing.com/download/ 接口,链接后加上对应课件的 objectid 即可获取到源文件。电脑上使用 Chrome 浏览器进入课程学习页面,打开开发者工具,在Console界面输入如下命令即可获取本页所有的 objectid:

1
2
3
var attachments = document.getElementById('iframe').contentWindow.mArg.attachments;
for (i=0;i<attachments.length;i++){
console.log(attachments[i].property.objectid

这样你就下载成功了老师的课件!!!

本文主要参考了https://lmqyu.cn/1632.html。

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

hello hexo

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment