1.集群搭建与配置

本来想使用centos镜像搭建服务器集群,但最小化安装版的镜像也需要1G左右,如果后面再部署一些大数据软件,单是多台服务器环境部署就会占用大量空间,加上此版本镜像在不同电脑环境的安装过程中可能会有一些问题出现,因此选择使用docker容器方式来搭建集群。
docker搭建的集群包含3个节点,其中每个节点在原始centos镜像基础上安装了一些必要命令工具和部署了包括Hadoop、Zookeeper等集群软件后,占用空间在2G左右。

1.1 centos镜像配置

本次集群服务器选择centos镜像来部署

#docker下载centos镜像,不加tag默认下载最新版本(latest)
docker pull centos#查看所有镜像信息
docker images#用centos镜像创建容器#name 自定义容器名称#privileged 以真正root身份操作容器#centos:latest 镜像的名称:版本,用镜像id替代也可以
docker run -itd --name serverbase --privileged centos:latest init#查看所有运行中的容器
docker ps#进入容器
docker exec -it serverbase /bin/bash#设置root用户密码
passwd#容器使用的centos镜像版本是latest,需要修改镜像源后才能正常安装一些工具,在容器内部分别执行
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum makecache
yum update -y#安装一些必要工具
yum -y install vim
yum install passwd
sudo yum install net-tools
yum install telnet
yum install openssh-server -y
yum install openssh-clients -y#修改ssh配置文件sshd_config,修改参照图1红框两处
vi /etc/ssh/sshd_config#修改完保存,重启ssh服务
systemctl start sshd#退出容器
exit#将修改后的容器打包生成新的镜像#serverbase 上面修改的容器名称,使用容器id也可以#centos:serverbase 要生成的新镜像的名称:tag
docker commit -a “作者名称” -m "一些说明信息" serverbase centos:serverbase#查看新生成的镜像
docker images

图1:配置文件sshd_config的修改

1.2 IP问题

Docker网络模式

docker在创建容器时,默认使用的网络模式是bridge,即桥接网络模式。docker默认情况下会建立bridge、host和none三种网络类型,

#查看docker网络类型
docker network ls

默认的bridge网络模式在创建容器时会在网段内按照顺序获取IP地址,IP地址取决于目前已有多少容器在运行,所以docker重启后会变化,我们希望通过docker创建的linux服务器集群要有固定的IP,可以使用docker自定义桥接网络方式来实现容器IP的固定。

自定义桥接网络

#使用如下命令创建自定义桥接网络#subnet  指定一个docker网段,要和docker自建的bri0不同#mydocnetwork  自定义网络名称
docker network create --subnet=172.18.0.0/16 mydocnetwork#创建完后再次查看docker网络,发现多了一个mydocnetwork,表示已成功创建
docker network ls

1.3 集群节点配置

本集群包含3个节点,注意节点的命名最好不要有下划线或特殊字符,否则在后面部署软件集群时可能会引发一些问题。

创建第1个节点-node1

docker run -d --name node1 --hostname node1 --net mydocnetwork --ip 172.18.0.2 -p 10100:22 -p 10101:9870 -p :10102:8088 -p 10103:9000 -p 10104:16010 -p :10105:8081 -p 10106:3000 -p 10107:8042 --privileged centos:serverbase /usr/sbin/init

参数解释:

  • name 容器名称(集群节点名称)

  • hostname 指定主机名,创建后可以查看容器内的 /etc/hosts

  • net 指定网络,这里的mydocnetwork是上面自定义的桥接网络,使用此网络可以给容器指定固定IP地址

  • ip 指定的固定IP地址

  • p 注意是小写的p,比如第一个,9001是宿主机端口,22是容器内部端口,可以同时定义多个,宿主机端口可以自定义,不要有冲突就行。xshell等工具连接此节点时使用宿主机ip、端口10100,其他接口用于访问后面部署的一些软件监控页面,这里端口暂时写不全也没关系,容器创建后也可以在配置文件里新增端口

  • privileged 使容器拥有真正root权限

  • centos:serverbase 上面重新创建后的镜像名:tag

*选读:容器创建后添加端口方法

#查看要新增暴露端口的容器id,比如上面创建的节点1的容器id:596e1712214d
docker ps -a#查找要修改的容器的完整ID,结果为 596e1712214d23e7b2c648f47f24a441b8e645b1155e747796a357d1507cad9a
docker inspect 596e1712214d | grep Id#到 /var/lib/docker/containers 路径()目录下找到与完整Id相同的目录
#修改此目录下的 hostconfig.json 与 config.v2.json 两个配置文件#修改前需要先停掉容器与docker服务
docker stop 容器ID
systemctl stop docker#hostconfig.json需要修改 PortBindings ,按下面这个格式来添加端口对
#格式:"{容器内部端口}/tcp":[{"HostIp":"","HostPort":"映射的宿主机端口"}]
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"10100"}],"9870/tcp":[{"HostIp":"","HostPort":"10101"}]}#config.v2.json需要修改 ExposedPorts ,按下面这个格式来添加端口(容器内的端口)
#格式:"{容器内部端口}/tcp":{}
"ExposedPorts":{"22/tcp":{},"9870/tcp":{}}#修改完,重启docker服务
systemctl restart docker

创建第2个节点-node2

docker run -d --name node2 --hostname node2 --net mydocnetwork --ip 172.18.0.3 -p 10200:22 -p 10201:9870 -p :10202:8088 -p 10203:9000 -p 10204:16010 -p :10205:8081 -p 10206:3000 -p 10207:8042 --privileged centos:serverbase /usr/sbin/init

创建第3个节点-node3

docker run -d --name node3 --hostname node3 --net mydocnetwork --ip 172.18.0.4 -p 10300:22 -p 10301:9870 -p :10302:8088 -p 10303:9000 -p 10304:16010 -p :10305:8081 -p 10306:3000 -p 10307:8042 --privileged centos:serverbase /usr/sbin/init

修改节点root用户密码

#依次进入三个节点的容器内
docker exec -it 容器id /bin/bash#设置root用户密码
passwd

配置hosts

#为了使节点间互相通过节点名称(主机名)来识别连通,需要在 /etc/hosts 里面配置域名解析,但由于每次重启容器都会重置 /etc/hosts ,所以需要在三个节点的 /etc/bashrc 文件里面加上如下内容,这样每次进入容器都会自动写入 /etc/hosts
#172.18.0.2、172.18.0.3、172.18.0.4分别是三个节点的ip,也即容器内部ip,可以在进入容器后通过ifconfig命令查看# node1
result=$(cat /etc/hosts | grep ".*172.18.0.2.*node1.*")
if [[ "$result" = "" ]]
thenecho "172.18.0.2 node1" >> /etc/hosts
fi# node2
result=$(cat /etc/hosts | grep ".*172.18.0.3.*node2.*")
if [[ "$result" = "" ]]
thenecho "172.18.0.3 node2" >> /etc/hosts
fi# node3
result=$(cat /etc/hosts | grep ".*172.18.0.4.*node3.*")
if [[ "$result" = "" ]]
thenecho "172.18.0.4 node3" >> /etc/hosts
fi#没有ll别名的可以加上
alias ll="ls -alF"#修改完执行
source /etc/bashrc#为了方便xshell等软件使用节点名连接,需要在自己电脑的hosts文件里配置域名解析,Mac系统在 /etc/hosts 文件里修改,windows系统在 C:\Windows\System32\drivers\etc 文件里加上
宿主机ip node1
宿主机ip node2
宿主机ip node3

容器自启动

#设置容器开机自启动
docker update --restart=always 容器id
#关闭容器自启动
docker update --restart=no 容器id

1.4 ssh免密登录

#集群间经常需要互相访问,设置免密登录能极大方便节点间的协作。在三个节点分别执行
ssh-keygen -t rsa -b 4096
#一路回车直至结束#在三个节点分别执行
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
#输入对应节点root用户密码即可

1.5 集群时区修改与时间同步

时区修改

#默认的centos镜像时区并不是beijing时间,因此和系统时间会有差异,需要同步时间。进入节点容器,查看时间
date
#如有差异,再查看节点服务器时区
timedatectl
#如果想把时区修改成 Asia/Shanghai
timedatectl set-timezone Asia/Shanghai
#修改完再次查看时区和时间

时间同步-chrony服务端节点设置

#chrony工具可以用一台服务器作为其他节点的server服务端来同步集群服务器时间。需要先安装chrony
yum -y install chrony
#安装完成后开启服务、设置开机自启动
systemctl start chronyd
systemctl enable chronyd#选择一台作为server服务端的服务器(此处以节点node1为例),chrony服务端节点需要修改配置文件chrony.conf,修改两处如图2所示
vi /etc/chrony.conf#修改完成后重启chrony服务
systemctl restart chronyd

图2:服务端配置文件chrony.conf的修改

  • allow 0.0.0.0/0 允许哪些客户端来同步本机的时间

  • local stratum 10 本机不同步任何主机的时间,本机作为时间源

时间同步-chrony客户端节点设置

#在节点2、3上同样安装chrony、开启服务、设置开机自启动
#修改节点2、3上的配置文件chrony.conf,修改两处如图3所示,然后重启服务
#查看server和同步节点信息
chronyc activity
chronyc tracking

图3:客户端配置文件chrony.conf的修改

1.6 防火墙管理

#三个节点安装防火墙
yum install firewalld firewall-config#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

2.集群软件部署

2.1 jdk安装配置

jdk下载

jdk官方下载地址

#在3个节点创建软件安装文件夹
mkdir -p /export/server#在node1上将下载的jdk压缩包解压
tar -zxvf jdk-8u351-linux-aarch64.tar.gz -C /export/server#使用scp将jdk安装目录分发到node2、node3
cd /export/server
scp -r jdk1.8.0_351 node2:`pwd`/
scp -r jdk1.8.0_351 node3:`pwd`/#在3个节点建立软链接
ln -s /export/server/jdk1.8.0_351 /export/server/jdk
#有些linux系统会自带java,删除并重建软连接
rm -f /usr/bin/java
ln -s /export/server/jdk/bin/java /usr/bin/java

配置java环境变量

#在3个节点上修改配置文件
vi /etc/profile
#在最后加上
export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin#修改完保存并运行
source /etc/profile

2.2 Zookeeper集群安装

#安装wget
yum -y install wget#node1下载Zookeeper
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz#解压
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server#创建zookeeper数据存储目录
mkdir /export/server/zookeeper/data#重命名配置文件
mv /export/server/zookeeper/conf/zoo_sample.cfg /export/server/zookeeper/conf/zoo.cfg
#修改配置文件zoo.cfg
vi /export/server/zookeeper/conf/zoo.cfg
#对应修改以下内容
tickTime=2000
dataDir=/export/server/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888#myid的配置,创建文件myid,内容写1(node1节点写1,node2节点写2,以此类推,用于不同节点上zookeeper的标识)
vi /export/server/zookeeper/data/myid#分发,在node1上
cd /export/server
#使用scp命令分发到节点2和3上
scp -r apache-zookeeper-3.5.9-bin node2:`pwd`/
scp -r apache-zookeeper-3.5.9-bin node3:`pwd`/#在3个节点上创建软链接
ln -s /export/server/apache-zookeeper-3.5.9-bin /export/server/zookeeper#node2上修改myid文件,内容写2
vi /export/server/zookeeper/data/myid
#node3上修改myid文件,内容写3
vi /export/server/zookeeper/data/myid#启动Zookeeper
/export/server/zookeeper/bin/zkServer.sh start#jps命令查看启动的进程,看到 QuorumPeerMain 这个进程即为启动成功
jps#验证zookeeper是否配置成功
/export/server/zookeeper/bin/zkCli.sh
#然后在控制台输入
ls /
#出现[zookeeper]表示zookeeper配置成功

2.3 Kafka集群安装

#node1下载
wget http://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz#解压
tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/#修改配置文件 server.properties
vi /export/server/kafka/config/server.properties
#修改以下内容
broker.id=1
listeners=PLAINTEXT://node1:9092
log.dirs=/export/server/kafka/data
zookeeper.connect=node1:2181,node2:2181,node3:2181#分发,在node1上
cd /export/server
#使用scp命令分发到节点2和3上
scp -r kafka_2.12-2.4.1 node2:`pwd`/
scp -r kafka_2.12-2.4.1 node3:`pwd`/#在3个节点上创建软链接
ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafka#node2上修改配置文件 server.properties
vi /export/server/kafka/config/server.properties
#修改以下内容
broker.id=2
listeners=PLAINTEXT://node2:9092#node3上修改配置文件 server.properties
vi /export/server/kafka/config/server.properties
#修改以下内容
broker.id=3
listeners=PLAINTEXT://node3:9092#在3个节点上节点上启动kafka(一般选择下面的后台启动方式)
/export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties
#如果启动报错 "Error: VM option 'UseG1GC' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions",则可修改此配置文件 /export/server/kafka/bin/kafka-run-class.sh ,如图4所示,删掉这段文字即可
vi /export/server/kafka/bin/kafka-run-class.sh#后台运行
nohup /export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties 2>&1 >> /export/server/kafka/kafka-server.log &#jps命令查看启动的进程,看到Kafka这个进程即为启动成功
jps#验证kafka是否配置成功
#在node1创建一个主题
/export/server/kafka_2.12-2.4.1/bin/kafka-topics.sh --create --zookeeper node1:2181 --replication-factor 1 --partitions 3 --topic test#在nide1执行,启动一个模拟的数据生产者,会出现一个命令提示符,此时先不输入
/export/server/kafka_2.12-2.4.1/bin/kafka-console-producer.sh --broker-list node1:9092 --topic test#在node2或node3执行如下命令,启动一个模拟的数据消费者
/export/server/kafka_2.12-2.4.1/bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic test --from-beginning#此时回到节点1随便输入内容然后回车,会在另外节点看到输出内容,表示kafka安装配置成功

图4:启动错误处理

2.4 Hadoop集群安装

#node1下载
wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz#解压
tar -zxvf hadoop-3.3.0.tar.gz -C /export/server/

修改配置文件

#所有要修改的配置文件路径,在node1上
cd /export/server/hadoop/etc/hadoop

vi hadoop-env.sh

#在文件开始处加入以下内容:export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn
export HADOOP_LOG_DIR=$HADOOP_HOME/logs/hdfs
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_PROXYSERVER_USER=root

vi core-site.xml

#先删除文件里所有内容,然后粘贴如下内容<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed 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 andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. -->
<configuration><property><name>fs.defaultFS</name><value>hdfs://node1:8020</value><description></description></property><property><name>io.file.buffer.size</name><value>131072</value><description></description></property>
</configuration>

vi hdfs-site.xml

#先删除文件里所有内容,然后粘贴如下内容<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed 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 andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><property><name>dfs.datanode.data.dir.perm</name><value>700</value></property><property><name>dfs.namenode.name.dir</name><value>/data/nn</value><description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.</description></property><property><name>dfs.namenode.hosts</name><value>node1,node2,node3</value><description>List of permitted DataNodes.</description></property><property><name>dfs.blocksize</name><value>268435456</value><description></description></property><property><name>dfs.namenode.handler.count</name><value>100</value><description></description></property><property><name>dfs.datanode.data.dir</name><value>/data/dn</value></property>
</configuration>

vi mapred-env.sh

#在文件开始加入以下内容:
export JAVA_HOME=/export/server/jdk
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA

vi mapred-site.xml

#先删除文件里所有内容,然后粘贴如下内容<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed 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 andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><property><name>mapreduce.framework.name</name><value>yarn</value><description></description></property><property><name>mapreduce.jobhistory.address</name><value>node1:10020</value><description></description></property><property><name>mapreduce.jobhistory.webapp.address</name><value>node1:19888</value><description></description></property><property><name>mapreduce.jobhistory.intermediate-done-dir</name><value>/data/mr-history/tmp</value><description></description></property><property><name>mapreduce.jobhistory.done-dir</name><value>/data/mr-history/done</value><description></description></property>
<property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
</configuration>

vi yarn-env.sh

#在文件开始加入以下内容:
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn
export HADOOP_LOG_DIR=$HADOOP_HOME/logs/hdfs

vi yarn-site.xml

#先删除文件里所有内容,然后粘贴如下内容<?xml version="1.0"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed 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 andlimitations under the License. See accompanying LICENSE file.
-->
<configuration><!-- Site specific YARN configuration properties -->
<property><name>yarn.log.server.url</name><value>http://node1:19888/jobhistory/logs</value><description></description>
</property><property><name>yarn.web-proxy.address</name><value>node1:8089</value><description>proxy server hostname and port</description></property><property><name>yarn.log-aggregation-enable</name><value>true</value><description>Configuration to enable or disable log aggregation</description></property><property><name>yarn.nodemanager.remote-app-log-dir</name><value>/tmp/logs</value><description>Configuration to enable or disable log aggregation</description></property><!-- Site specific YARN configuration properties --><property><name>yarn.resourcemanager.hostname</name><value>node1</value><description></description></property><property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value><description></description></property><property><name>yarn.nodemanager.local-dirs</name><value>/data/nm-local</value><description>Comma-separated list of paths on the local filesystem where intermediate data is written.</description></property><property><name>yarn.nodemanager.log-dirs</name><value>/data/nm-log</value><description>Comma-separated list of paths on the local filesystem where logs are written.</description></property><property><name>yarn.nodemanager.log.retain-seconds</name><value>10800</value><description>Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.</description></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>Shuffle service that needs to be set for Map Reduce applications.</description></property>
</configuration>

vi workers

#添加所有节点
node1
node2
node3

分发到其他节点

#分发,在node1上
cd /export/server
#使用scp命令分发到节点2和3上
scp -r hadoop-3.3.0 node2:`pwd`/
scp -r hadoop-3.3.0 node3:`pwd`/#在3个节点上创建软链接
ln -s /export/server/hadoop-3.3.0 /export/server/hadoop

在node1上创建目录

mkdir -p /data/nn
mkdir -p /data/dn
mkdir -p /data/nm-log
mkdir -p /data/nm-local

在node2和node3上创建目录

mkdir -p /data/dn
mkdir -p /data/nm-log
mkdir -p /data/nm-local

配置3个节点环境变量

#在3个节点的 /etc/profile 配置文件里加入如下内容
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin#执行使更改生效
source /etc/profile

服务启动与验证

#node1上执行,格式化NameNode
hadoop namenode -format#node1上启动hadoop的hdfs集群
start-dfs.sh
#停止 stop-dfs.sh#node1上启动hadoop的yarn集群
start-yarn.sh
#停止 stop-yarn.sh#node1上启动历史服务器
mapred --daemon start historyserver
#停止 mapred --daemon start historyserver#node1、node2、node3执行jps
jps
#看到图5所示这些进程,表示启动成功#到浏览器中打开:http://宿主机ip:10101、http://宿主机ip:10102
#能打开表示HDFS和YARN服务正常#验证hadoop集群的运行是否正常,在node1上
cd ~
#创建测试文件test.txt,随便填入一些内容
vi test.txt
#上传文件到HDFS中
hadoop fs -put test.txt /test.txt
#执行命令
hadoop jar /export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount -Dmapred.job.queue.name=root.root /test.txt /output
#如能成功执行,计算出文本字数,表示hadoop集群安装部署成功

图5:jps进程

利用docker搭建服务器集群并部署大数据生态软件相关推荐

  1. 利用Docker搭建Redis集群

    Redis集群搭建 运行Redis镜像 分别使用以下命令启动3个Redis docker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/lib ...

  2. 用Docker搭建Elasticsearch集群

    用Docker搭建Elasticsearch集群 对于用Docker搭建分布式Elasticsearhc集群的一个介绍,以及一些实施中遇到问题的总结 搜索服务简述 结合业务的场景,在目前的商品体系需要 ...

  3. docker搭建pxc集群

    前言 随着mysql存储的数据量越来越大,mysql查询单表时的响应速度也会随之变慢,尤其是当单节点承载的数据量超出一定的范围后,比如单表超过2000万之后,查询响应速度会下降的很快,因此,一方面可以 ...

  4. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...

    10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 原文:10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式 ...

  5. [零基础]用docker搭建Hadoop集群

    目录 前言:为什么要用docker搭建Hadoop集群? 准备:下载VMware.VMwareTools(或Xftp.Xshell).Ubuntu或者CentOS映像文件.Hadoop和jdk压缩包 ...

  6. Docker学习七:使用docker搭建Hadoop集群

    本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧 Docker学习一:Dock ...

  7. Docker搭建Clickhouse集群

    Docker搭建Clickhouse集群 环境说明 2C 2G 30G hostname IP 操作系统 服务 localhost 192.168.88.171 CentOs 7.8 clickhou ...

  8. Mac 使用 docker 搭建 kafka 集群 + Zookeeper + kafka-manager

    Kafka 搭建: 建立Zookeeper容器: 这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,最好是能有多台机器. $ do ...

  9. Docker搭建hadoop集群

    参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...

最新文章

  1. 正则表达式与三剑客的使用技巧
  2. sql必知必会(第四版) 学习笔记一
  3. Java连接数据库(JDBC)之三:java访问数据库MySQL实例
  4. WEB服务在单点登录系统中的应用研究
  5. python在工厂中的应用_Python工厂方法
  6. 计算字符在字符串中出现的次数
  7. 大二生活之致给影响我最大的大学老师,我和老师的一些事
  8. iOS 数据持久化 NSUserDefault
  9. windows里面的批处理命令不停地处理同一条命令
  10. Excel 【数据透视表】 -【动态表图】 之核心 -【切片器】
  11. 《疯狂的程序员》 -- 什么是真正的程序员?
  12. 易语言解压服务器中压缩包,易语言取压缩包中的文件列表源码
  13. Java核心编程总结(六、常用API与集合)
  14. iter()——迭代器
  15. The types of the interface org.apache.flink.util.OutputTag could not be inferred.
  16. Java接口练习(组装电脑)
  17. DirectX11与DirectX12在古墓丽影暗影中的表现
  18. 浏览器无法访问gitlab.nicky.com解决办法
  19. VisionPro相机操作类
  20. 量化交易入门阶段——欧奈尔的CANSLIM模型(A 年度净利润同比增长率)

热门文章

  1. epson服务器连接状态断开,爱普生打印机常见故障解决方法
  2. Cocos2dx客户端崩溃的几种情况
  3. php直播pk规则,主播参加直播间PK的出发点是什么,要达到什么样的目的?
  4. 网站开发(一)Node.Js 安装和配置及express配置
  5. centos7_srs4.10_webrtc_rtmp_rtsp
  6. Java 提升 免费视频集合
  7. 论文笔记——Sparse R-CNN
  8. kali2020.3 初步配置及修改终端颜色
  9. 3维/点云/遥感数据集
  10. LIC 2022 视频语义理解基线(快速启动版)