Hadoop大数据集群搭建

news2024/9/22 19:36:47

一、虚拟机配置网络

1、配置文件

进入“/etc/sysconfig/network-scripts”目录,查看当前目录下的“ifcfg-ens33”文件

对“ens33”文件进行配置

2、重启网络

systemctl restart network

3、测试网络

Ping www.baidu.com

4、设置虚拟机主机名称

5、绑定主机名和IP地址

vi /etc/hosts

6、查看ssh状态

7、关闭防火墙

Hadoop 可以使用 Web 页面进行管理,但需要关闭防火墙,否则打不开 Web 页 面。同时不关闭防火墙也会造成 Hadoop 后台运行脚本出现莫名其妙的错误。关闭命令如下:

systemctl stop firewalld

关闭防火墙后要查看防火墙的状态,确认一下。

可以看到防火墙是开启的,需要执行命令关闭

看到 inactive (dead)就表示防火墙已经关闭。不过这样设置后,Linux 系 统如果重启,防火墙仍然会重新启动。执行如下命令可以永久关闭防火墙。

systemctl disable firewalld

8、创建普通用户

在 Linux 系统中 root 用户为超级管理员,具有全部权限,使用 root 用户在 Linux 系统中进行操作,很可能因为误操作而对 Linux 系统造成损害。正常的作 法是创建一个普通用户,平时使用普通用户在系统进行操作,当用户需要使用管 理员权限,可以使用两种方法达到目的:一种方法是使用 su 命令,从普通用户 切换到 root 用户,这需要知道 root 用户的密码。另一种方法是使用 sudo 命令。 用户的 sudo 可以执行的命令由 root 用户事先设置好。 在本教材中使用 root 用户来安装 Hadoop 的运行环境,当 Hadoop 运行环境 都安装配置好后,使用 hadoop 用户(这只是一个用户名,也可以使用其他的用 户名)来运行 Hadoop实际工作中也是这样操作的。因此需要创建一个 hadoop 用户来使用 Hadoop。创建命令如下: 

useradd zxb
passwd xiaozhu

二、安装JAVA环境

1、检查虚拟机是否自带安装好的OpenJDK,若有则需要进行删除。

并没有存在(可能我的版本是最小安装的吧)

2、在/opt目录下创建两个文件夹,一个名为software,用来存放资源,一个名为module用来作为资源的安装路径。

cd /opt
mkdir software module

 

3、使用xftp工具上传下载好的jdk文件到/opt/software目录

4、解压到安装目录:/opt/module

tar -zxf /opt/software/jdk-8u371-linux-x64.tar.gz -C /opt/module/

5、配置JAVA环境

在 Linux 中设置环境变量的方法比较多,较常见的有两种:一是配置 /etc/profile 文件,配置结果对整个系统有效,系统所有用户都可以使用;二是配置~/bashrc 文件,配置结果仅对当前用户有效。这里使用第一种方法。 

vi /etc/profile

在末尾添加一段内容来指定JAVA的安装目录:

export JAVA_HOME=/opt/module/jdk1.8.0_371

export PATH=$PATH:$JAVA_HOME/bin # 将 JAVA 安装目录加入 PATH 路径

6、刷新配置

source /etc/profile 

7、检测是否已经安装成功

 

三、安装Hadoop

1、用xftp将安装包拉进 /opt/software目录中

2、将其解压到 /opt/module文件夹中。

tar -zxf /opt/software/hadoop-2.7.1.tar.gz -C /opt/module/

3、配置Hadoop环境变量

vi /etc/profile

配置环境:
# HADOOP_HOME 指向 JAVA 安装目录 
export HADOOP_HOME=/opt/module/hadoop-2.7.1 
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 执行 source 使用设置生效: 
[root@master ~]# source /etc/profile

4、检验是否安装成功

出现上述 Hadoop 帮助信息就说明 Hadoop 已经安装好了。

5、修改/opt/module目录的所有者跟所有者组

上述安装完成的 Hadoop 软件只能让 root 用户使用,要让 zxb 用户能够运行 Hadoop 软件,需要将目录 /opt/module的所有者改为 zxb 用户

/opt/module目录的所有者已经改为 zxb了。

6、配置Hadoop的配置文件

进入 Hadoop 目录

[root@master ~]# cd /opt/module/hadoop-2.7.1/

配置 hadoop-env.sh 文件,目的是告诉 Hadoop 系统 JDK 的安装目录。

[root@master ~]# vi etc/hadoop/hadoop-env.sh

在文件中查找 export JAVA_HOME 这行,将其改为如下所示内容。

export JAVA_HOME=/opt/module/jdk1.8.0_371

这样就设置好 Hadoop 的本地模式.

(在 vim 中,按下 / 键,然后输入你想要搜索的字段,按下回车键。vim 将会跳转到第一个匹配的字段所在的位置。如果你想继续查找下一个匹配项,可以按下 n 键。如果要向上查找,则按下 Shift + n 键。)

 

7、测试Hadoop

(1)切换到zxb用户,使用zxb用户来测试运行Hadoop软件

(2)创建输入数据存放目录

将输入数据存放在~/input 目录(zxb用户主目录下的 input 目录中)。

[zxb@master ~]$ mkdir ~/input

 

3)创建输入数据文件

创建数据文件 data.txt,将要测试的数据内容输入到 data.txt 文件中。

[zxb@master ~]$ vi ~/input/data.txt

# 输入如下内容,保存退出。 
Hello World 
Hello Hadoop 
Hello Wangzaixiaozhu

 (4)测试MapReduce

运行 WordCount 官方案例,统计 data.txt 文件中单词的出现频度。这个案例可以用来统计年度十大热销产品、年度风云人物、年度最热名词等。命令如下:

hadoop jar /opt/module/hadoop- 2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount ~/input/data.txt ~/output

可以看出统计结果正确,说明 Hadoop 本地模式运行正常。

四、克隆两个虚拟机作为子节点,一个为slave1,另一个为slave2

对克隆后的虚拟机进行修改IP、MAC信息以及主机名等信息。

1、Slave1、2信息修改:

2、重启网咯

3、修改主机名以及绑定主机名和IP地址

hostnamectl set-hostname slave1

[root@slave1 ~]# vi /etc/hosts

在其中增加如下一行内容:

192.168.229.101 slave1

 4、查看ssh状态

5、关闭防火墙

systemctl stop firewalld

slave2重复同样的操作即可。

五、集群网络配置

1、分别修改主机配置文件“/etc/hosts”,在命令终端输入如下命令

[root@master ~]# vi /etc/hosts 
# 输入内容:
192.168.229.100 master 
192.168.229.101 slave1 
192.168.229.102 slave2 

(三台虚拟机都要)

配置完毕,执行“reboot”命令重新启动系统。

六、配置ssh无密钥验证

1、每个节点安装和启动 SSH 协议

实现 SSH 登录需要 openssh 和 rsync 两个服务,一般情况下默认已经安装,可以通过下面命令查看结果

[root@master ~]# rpm -qa | grep openssh 

[root@master ~]# rpm -qa | grep rsync

并没有rsync,那么需要安装

yum install rsync

2、切换到zxb用户,每个节点额生成密钥树

#在 master 上生成密钥 
[zxb@master ~]$ ssh-keygen -t rsa -P '' 
#slave1 生成密钥 
[zxb@slave1 ~]$ ssh-keygen -t rsa -P '' 
#slave2 生成密钥 
[zxb@slave2 ~]$ ssh-keygen -t rsa -P ''

3、查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。(三台机都要)

4、将 id_rsa.pub 追加到授权 key 文件中 

#master 
[zxb@master .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
[zxb@master .ssh]$ ls ~/.ssh/ 
#slave1 
[zxb@slave1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
[zxb@slave1 .ssh]$ ls ~/.ssh/
#slave2 
[zxb@slave2 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
[zxb@slave2 .ssh]$ ls ~/.ssh/

5、修改文件"authorized_keys"权限

通过 ll 命令查看,可以看到修改后 authorized_keys 文件的权限为“rw-------”,表示所有者可读写,其他用户没有访问权限。如果该文件权限太大,ssh 服务会拒绝工作,出现无法通过密钥文件进行登录认证的情况

#master 
[zxb@master .ssh]$ chmod 600 ~/.ssh/authorized_keys 
[zxb@master .ssh]$ ll ~/.ssh/ 

#slave1 
[zxb@slave1 .ssh]$ chmod 600 ~/.ssh/authorized_keys 
[zxb@slave1 .ssh]$ ll ~/.ssh/

#slave2 
[zxb@slave2 .ssh]$ chmod 600 ~/.ssh/authorized_keys 
[zxb@slave2 .ssh]$ ll ~/.ssh/

6、配置SSH服务

使用 root 用户登录,修改 SSH 配置文件"/etc/ssh/sshd_config"的下列内容,需要将该配置字段前面的#号删除,启用公钥私钥配对认证方式。

#master 
[zxb@master .ssh]$ su - root 
[root@master ~]# vi /etc/ssh/sshd_config 
PubkeyAuthentication yes 
#slave1 
[zxb@slave1 .ssh]$ su - root 
[root@slave1 ~]# vi /etc/ssh/sshd_config 
PubkeyAuthentication yes 
#slave2 
[zxb@slave2 .ssh]$ su - root 
[root@slave2 ~]# vi /etc/ssh/sshd_config 
PubkeyAuthentication yes

7、重启SSH服务

设置完后需要重启 SSH 服务,才能使配置生效。

systemctl restart sshd 

8、切换到 zxb 用户,验证 SSH 登录本机

在 zxb 用户下验证能否嵌套登录本机,若可以不输入密码登录,则本机通过密钥登

首次登录时会提示系统无法确认 host 主机的真实性,只知道它的公钥指纹,询问用户是否还想继续连接。需要输入“yes”,表示继续登录。第二次再登录同一个主机,则不会再 出现该提示,可以直接进行登录。 
读者需要关注是否在登录过程中是否需要输入密码,不需要输入密码才表示通过密钥认证成功

 

配置成功。

9、交换 SSH 密钥

步骤一:将 Master 节点的公钥 id_rsa.pub 复制到每个 Slave 点

[zxb@master ~]$ scp ~/.ssh/id_rsa.pub zxb@slave1:~/ 
[zxb@master ~]$ scp ~/.ssh/id_rsa.pub zxb@slave2:~/ 

首次远程连接时系统会询问用户是否要继续连接。需要输入“yes”,表示继续。因为目前尚未完成密钥认证的配置,所以使用 scp 命令拷贝文件需要输入 slave1 节点 hadoop用户的密码

 步骤二:在每个 Slave 节点把 Master 节点复制的公钥复制到 authorized_keys 文件

[zxb@slave1 ~]$ cat ~/id_rsa.pub >>~/.ssh/authorized_keys 
[zxb@slave2 ~]$ cat ~/id_rsa.pub >>~/.ssh/authorized_keys

步骤三:在每个 Slave 节点删除 id_rsa.pub 文件

[zxb@slave1 ~]$ rm -f ~/id_rsa.pub 
[zxb@slave2 ~]$ rm -f ~/id_rsa.pub

步骤四:将每个 Slave 节点的公钥保存到 Master 

(1)将 Slave1 节点的公钥复制到 Master

[zxb@slave1 ~]$ scp ~/.ssh/id_rsa.pub zxb@master:~/

 

(2)在 Master 节点把从 Slave 节点复制的公钥复制到 authorized_keys 文件

[zxb@master ~]$ cat ~/id_rsa.pub >>~/.ssh/authorized_keys 

(3)在 Master 节点删除 id_rsa.pub 文件

[zxb@master ~]$ rm -f ~/id_rsa.pub

 

Slave2:
(1)将 Slave2 节点的公钥复制到 Master

[zxb@slave2 ~]$ scp ~/.ssh/id_rsa.pub zxb@master:~/

 

(2)在 Master 节点把从 Slave2 节点复制的公钥复制到 authorized_keys 文件

[zxb@master ~]$ cat ~/id_rsa.pub >>~/.ssh/authorized_keys

 

(3)在 Master 节点删除 id_rsa.pub 文件

[zxb@master ~]$ rm -f ~/id_rsa.pub

 

10、验证 SSH 无密码登录 

步骤一:查看 Master 节点 authorized_keys 文件

[zxb@master .ssh]$ cat ~/.ssh/authorized_keys

可以看到 Master 节点 authorized_keys 文件中包括 master、slave1、slave2 三个节点

的公钥

 

步骤二:查看 Slave 节点 authorized_keys 文件

[zxb@slave1.ssh]$ cat ~/.ssh/authorized_keys

[zxb@slave2.ssh]$ cat ~/.ssh/authorized_keys

可以看到 Slave 节点 authorized_keys 文件中包括 Master、当前 Slave 两个节点的公

 

步骤三:验证 Master 到每个 Slave 节点无密码登录

zxb 用户登录 master 节点,执行 SSH 命令登录 slave1 和 slave2 节点。可以观察到

不需要输入密码即可实现 SSH 登录

 

七、Hadoop全局配置

1、配置 hdfs-site.xml 文件参数

[root@master ~]# cd /opt/module/hadoop/etc/hadoop/

执行以下命令修改 hdfs-site.xml 配置文件。

[root@master hadoop]# vi hdfs-site.xml 

#在文件中<configuration></configuration>一对标签之间追加以下配置信息

<configuration> 
<property> 
<name>dfs.namenode.name.dir</name> 
<value>file:/opt/module/hadoop/dfs/name</value> 
</property> 
<property> 
<name>dfs.datanode.data.dir</name> 
<value>file:/opt/module/hadoop/dfs/data</value> 
</property> 
<property> 
<name>dfs.replication</name> 
<value>3</value> 
</property> 
</configuration>

在相应的路径下创建 dfs/data 和 dfs/name 目录。这些目录分别用于存储Hadoop分布式文件系统(HDFS)的数据节点(DataNode)数据和名称节点(NameNode)的元数据。

2、配置 core-site.xml 文件参数 

执行以下命令修改 core-site.xml 配置文件。

[root@master hadoop]# vi core-site.xml 
#在文件中<configuration>和</configuration>一对标签之间追加以下配置信息 
<configuration> 
<property> 
<name>fs.defaultFS</name> 
<value>hdfs://192.168.229.100:9000</value> 
</property> 
<property> 
<name>io.file.buffer.size</name> 
<value>131072</value> 
</property> 
<property> 
<name>hadoop.tmp.dir</name> 
<value>file:/opt/module/hadoop/tmp</value> 
</property> 
</configuration>

3、配置 mapred-site.xml

在“/opt/module/hadoop/etc/hadoop”目录下有一个 mapred-site.xml.template,需要修改文件名称,把它重命名为 mapred-site.xml,然后把 mapred-site.xml 文件配置成 如下内容。 执行以下命令修改 mapred-site.xml 配置文件。

#确保在该路径下执行此命令 
[root@master hadoop]# cd /opt/module/hadoop/etc/hadoop 
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml 
[root@master hadoop]# vi mapred-site.xml 
#在文件中<configuration>和</configuration>一对标签之间追加以下配置信息 
<configuration> 
<property> 
<name>mapreduce.framework.name</name> 
<value>yarn</value> 
</property> 
<property> 
<name>mapreduce.jobhistory.address</name> 
<value>master:10020</value> 
</property> 
<property> 
<name>mapreduce.jobhistory.webapp.address</name> 
<value>master:19888</value> 
</property> 
</configuration>

4、配置 yarn-site.xml 

# 执行以下命令修改 yarn-site.xml 配置文件。 
[root@master hadoop]# vi yarn-site.xml 
#在文件中<configuration>和</configuration>一对标签之间追加以下配置信息 
<configuration> 
<property> 
<name>yarn.resourcemanager.address</name> 
<value>master:8032</value> 
</property> 
<property> 
<name>yarn.resourcemanager.scheduler.address</name> 
<value>master:8030</value> 
</property> 
<property> 
<name>yarn.resourcemanager.resource-tracker.address</name> 
<value>master:8031</value> 
</property> 
<property> 
<name>yarn.resourcemanager.admin.address</name> 
<value>master:8033</value> 
</property> 
<property> 
<name>yarn.resourcemanager.webapp.address</name> 
<value>master:8088</value> 
</property> 
<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> 
</configuration>

5、配置 masters 文件

# 执行以下命令修改 masters 配置文件。 
# 加入以下配置信息 
[root@master hadoop]# vi masters 
#master 主机 IP 地址 
192.168.229.100

6、配置 slaves 文件

需要把所有数据节点的主机名写入该文件,每行一个,默认为 localhost(即把本机作为数据节点),所以,在伪分布式配置时,就采用了这种默认的配,使得节点既作为名称 节点也作为数据节点。在进行分布式配置时,可以保留 localhost,让 Master 节点同时充当名称节点和数据节点,或者也可以删掉 localhost 这行,让 Master 节点仅作为名称节点 使用。 本教材 Master 节点仅作为名称节点使用,因此将 slaves 文件中原来的 localhost 删 
除,并添加 slave1、slave2 节点的 IP 地址。 

# 执行以下命令修改 slaves 配置文件。 
# 删除 localhost,加入以下配置信息 
[root@master hadoop]# vi slaves 
#slave1 主机 IP 地址 
192.168.229.101
#slave2 主机 IP 地址 
192.168.229.102

7、将slave1、slave2原本的hadoop软件删除,再从master节点复制过去

[zxb@master ~]$ scp -r /opt/module/hadoop/ zxb@slave1:/opt/module/
[zxb@master ~]$ scp -r /opt/module/hadoop/ zxb@slave2:/opt/module/

修改环境变量

vi /etc/profile

source /etc/profile

刷新配置即可。

八、Hadoop集群运行

1、配置Hadoop格式化

步骤一:NameNode 格式化

将 NameNode 上的数据清零,第一次启动 HDFS 时要进行格式化,以后启动无需再格式 化,否则会缺失 DataNode 进程。另外,只要运行过 HDFS,Hadoop 的工作目录(本书设置为/opt/module/hadoop/tmp)就会有数据,如果需要重新格式化,则在格式化之前一定要先删除工作目录下的数据,否则格式化时会出问题。

执行如下命令,格式化 NameNode 
[root@master ~]# su – hadoop 
[zxb@master ~]$ cd /opt/module/hadoop/
[zxb@master hadoop]$ bin/hdfs namenode –format

步骤二:启动 NameNode

执行如下命令,启动 NameNode:

[zxb@master hadoop]$ hadoop-daemon.sh start namenode

2、查看Java进程

启动完成后,可以使用 JPS 命令查看是否成功。JPS 命令是 Java 提供的一个显示当前 所有 Java 进程 pid 的命令

步骤一:slave 启动 DataNode

执行如下命令,启动 DataNode:

[zxb@slave2 hadoop]$ hadoop-daemon.sh start datanode

[zxb@slave1 hadoop]$ hadoop-daemon.sh start datanode

 

步骤二:启动 SecondaryNameNode

执行如下命令,启动 SecondaryNameNode:

查看到有 NameNode 和 SecondaryNameNode 两个进程,就表明 HDFS 启动成功。

步骤三:查看 HDFS 数据存放位置:

执行如下命令,查看 Hadoop 工作目录:

[zxb@master hadoop]$ ll dfs/

3、查看HDFS报告

4、使用浏览器查看节点状态

在浏览器的地址栏输入http://master:50070,进入页面可以查看NameNode和DataNode信息

在浏览器的地址栏输入 http://master:50090,进入页面可以查看 SecondaryNameNode信息

可以使用 start-dfs.sh 命令启动 HDFS。这时需要配置 SSH 免密码登录,否则在启动过程中系统将多次要求确认连接和输入 Hadoop 用户密码

[zxb@master hadoop]$ stop-dfs.sh 
[zxb@master hadoop]$ start-dfs.sh

步骤一:在 HDFS 文件系统中创建数据输入目录

确保 dfs 和 yarn 都启动成功

[zxb@master hadoop]$ start-yarn.sh 
[zxb@master hadoop]$ jps 

如果是第一次运行 MapReduce 程序,需要先在 HDFS 文件系统中创建数据输入目录,存放输入数据。这里指定/input 目录为输入数据的存放目录。执行如下命令,在 HDFS 文件系统中创建/input 目录:

[zxb@master hadoop]$ hdfs dfs -mkdir /input 
[zxb@master hadoop]$ hdfs dfs -ls / 

此处创建的/input 目录是在 HDFS 文件系统中,只能用 HDFS 命令查看和操作。

步骤二:将输入数据文件复制到 HDFS 的/input 目录中

测试用数据文件仍然是上一节所用的测试数据文件~/input/data.txt,内容如下所示。

# 执行如下命令,将输入数据文件复制到 HDFS 的/input 目录中: 
[zxb@master hadoop]$ hdfs dfs -put ~/input/data.txt /input 
# 确认文件已复制到 HDFS 的/input 目录: 
[zxbmaster hadoop]$ hdfs dfs -ls /input

步骤三:运行 WordCount 案例,计算数据文件中各单词的频度。

运行 MapReduce 命令需要指定数据输出目录,该目录为 HDFS 文件系统中的目录,会自

动生成。如果在执行 MapReduce 命令前,该目录已经存在,则执行 MapReduce 命令会出错。

例如 MapReduce 命令指定数据输出目录为/output,/output 目录在 HDFS 文件系统中已经存

在,则执行相应的 MapReduce 命令就会出错。所以如果不是第一次运行 MapReduce,就要先

查看HDFS中的文件,是否存在/output目录。如果已经存在/output目录,就要先删除/output

目录,再执行上述命令。

自动创建的/output 目录在 HDFS 文件系统中,使用 HDFS 命令查看和操作。

[zxb@master hadoop]$ hdfs dfs -mkdir /output
# 先执行如下命令查看 HDFS 中的文件: 
[zxb@master hadoop]$ hdfs dfs -ls /

上述目录中/input 目录是输入数据存放的目录,/output 目录是输出数据存放的目录。执行如下命令,删除/output 目录。

[zxb@master hadoop]$ hdfs dfs -rm -r -f /output 

执行如下命令运行 WordCount 案例:

[zxb@master hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input/data.txt /output

MapReduce 程序运行过程中的输出信息如下所示:

由上述信息可知 MapReduce 程序提交了一个作业,作业先进行 Map,再进行 Reduce 操

作。

MapReduce 作业运行过程也可以在 YARN 集群网页中查看。在浏览器的地址栏输入:

http://master:8088,页面如图 所示,可以看到 MapReduce 程序刚刚完成了一个作业

除了可以用 HDFS 命令查看HDFS文件系统中的内容,也可使用网页查看 HDFS 文件系统。

在浏览器的地址栏输入 http://master:50070,进入页面,在 Utilities 菜单中选择 Browse the file system,可以查看 HDFS 文件系统内容。如图 5-5 所示,查看 HDFS 的根目录,可以看到 HDFS 根目录中有三个目录,input、output 和 tmp。

 

查看 output 目录,如图 所示,发现有两个文件。文件_SUCCESS 表示处理成功,处

理的结果存放在 part-r-00000 文件中。在页面上不能直接查看文件内容,需要下载到本地

系统才行。

 

可以使用 HDFS 命令直接查看 part-r-00000 文件内容,结果如下所示

[zxb@master hadoop]$ hdfs dfs -cat /output/part-r-00000

可以看出统计结果正确,说明 Hadoop 运行正常。

5、停止Hadoop

步骤一:停止 yarn

[zxb@master hadoop]$ stop-yarn.sh

步骤二:停止 DataNode

[zxb@slave1 hadoop]$ hadoop-daemon.sh stop datanode

[zxb@slave2 hadoop]$ hadoop-daemon.sh stop datanode

步骤三:停止 NameNode

[zxb@master hadoop]$ hadoop-daemon.sh stop namenode

步骤三:停止 SecondaryNameNode

[zxb@master hadoop]$ hadoop-daemon.sh stop secondarynamenode

步骤四:查看 JAVA 进程,确认 HDFS 进程已全部关闭

[zxb@master hadoop]$ jps

九、Mapreduce实战

使用Mapreduce统计‘基于EVE-NG的网络工程实践平台.txt’里面的 eve-ng 的个数

1、使用xftp将这个文件上传 ~/input目录下


[zxb@master hadoop]$ hdfs dfs -ls / 

将/output、/tmp先行删除。

删除之后上传文件:

2、将输入数据文件复制到 HDFS 的/input 目录中:

[zxb@master hadoop]$ hdfs dfs -put ~/input/基于EVE-NG的网络工程实践平台.txt /input

3、执行如下命令运行案例:

[zxb@master hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input/基于EVE-NG的网络工程实践平台.txt /output

4、浏览器访问,下载

http://192.168.229.100:50070/
	Utilities->Browse the file system
		/wordcount/output
			part-r-00000.

统计之后的结果:

十、Hive导入数据计算

1、使用xftp工具上次hive(1.2.1版本),并进行解压到/opt/module

2、配置环境变量

3、启动hive

4、创建数据库

create database labone;
use labone;

5、创建表

CREATE TABLE `stugr`  (
  `stuid` string,
  `class` string,
  `grade` int
);

6、导入数据

source /opt/module/stugr.sql;

7、查询数据

select * from stugr;

8、导入后计算命令

SELECT stuid, stugr.class, avg_grade, grade- avg_grade diff
FROM stugr,(select class,AVG( grade)avg_grade
FROM stugr
GROUP BY class
)avg_stugr
WHERE stugr.class = avg_stugr.class;

十一、Zookeeper安装

1、ZooKeeper 的安装包 zookeeper-3.4.8.tar.gz 已放置在 Linux 系统/opt/software目录下。

2、解压安装包到指定目标,在 Master 节点执行如下命令。 

[root@master ~]# tar -zxvf /opt/software/zookeeper-3.4.8.tar.gz -C 
/opt/module
[root@master ~]# mv /opt/module/zookeeper-3.4.8 
/opt/module/zookeeper

3、ZooKeeper 的配置选项 

步骤一:Master 节点配置
(1)在 ZooKeeper 的安装目录下创建 data 和 logs 文件夹。 
[root@master ~]# cd /opt/module/zookeeper 
[root@master zookeeper]# mkdir data && mkdir logs

(2)在每个节点写入该节点的标识编号,每个节点编号不同,master 节点写入 1, 
slave1 节点写入 2,slave2 节点写入 3。 

[root@master zookeeper]# echo 1 > /opt/module/zookeeper/data/myid 

(3)修改配置文件 zoo.cfg 

[root@master zookeeper]# cp /opt/module/zookeeper/conf/zoo_sample.cfg 
/opt/module/zookeeper/conf/zoo.cfg 
[root@master zookeeper]# vi /opt/module/zookeeper/conf/zoo.cfg
修改 dataDir 参数内容如下: 
dataDir=/opt/module/zookeeper/data

(4)在 zoo.cfg 文件末尾追加以下参数配置,表示三个 ZooKeeper 节点的访问端口号。 
server.1=master:2888:3888 
server.2=slave1:2888:3888 
server.3=slave2:2888:3888

(5)修改 ZooKeeper 安装目录的归属用户为 zxb 用户。 
[root@master zookeeper]# chown -R zxb:zxb /opt/module/zookeeper

步骤二:Slave 节点配置 
(1)从 Master 节点复制 ZooKeeper 安装目录到两个 Slave 节点。 
[root@master ~] # cd ~ 
[root@master ~] # scp -r /opt/module/zookeeper slave1:/opt/module
[root@master ~] # scp -r /opt/module/zookeeper slave2:/opt/module

(2)在 slave1 节点上修改 zookeeper 目录的归属用户为 zxb 用户。 
[root@slave1 ~] # chown -R zxb:zxb /opt/module/zookeeper 
(3)在 slave1 节点上配置该节点的 myid 为 2。 
[root@slave1 ~] # echo 2 > /opt/module/zookeeper/data/myid

(4)在 slave2 节点上修改 zookeeper 目录的归属用户为 zxb 用户。 
[root@slave2 ~] # chown -R zxb:zxb /opt/module/zookeeper 
(5)在 slave2 节点上配置该节点的 myid 为 3。 
[root@slave2 ~] # echo 3 > /opt/module/zookeeper/data/myid

步骤三:系统环境变量配置
在 master、slave1、slave2 三个节点增加环境变量配置。 
# vi /etc/profile 
# 在文件末尾追加
# set zookeeper environment 
# ZooKeeper 安装目录 
export ZOOKEEPER_HOME=/opt/module/zookeeper 
# ZooKeeper 可执行程序目录 
export PATH=$PATH:$ZOOKEEPER_HOME/bin

重启环境变量
Source /etc/profile

4、启动zookeeper

启动 ZooKeeper 需要使用 Hadoop 用户进行操作。

(1)分别在 master、slave1、slave2 三个节点使用 zkServer.sh start 命令启动

ZooKeeper。

(2)三个节点都启动完成后,再统一查看 ZooKeeper 运行状态。

分别在 master、slave1、slave2 三个节点使用 zkServer.sh status 命令查看

ZooKeeper 状态。可以看到三个节点的状态分别为 follower、leader、follower。三个节

点会包括一个 leader 和两个 follower,每个节点地位均等,leader 是根据 ZooKeeper 内

部算法进行选举,每个节点的具体状态不固定

十二、Hbase安装

1、解压HBase安装包

[root@master ~]# tar -zxvf /opt/software/hbase-1.2.1-bin.tar.gz -C 
/opt/module

 

2、重命名 HBase 安装文件夹 

[rootp@master]#mv hbase-1.2.1 hbase

3、在master节点添加环境变量 

[root@master ~]# vi /etc/profile 
# set hbase environment 
export HBASE_HOME=/opt/module/hbase 
export PATH=$HBASE_HOME/bin:$PATH 

重启环境变量
source /etc/profile

4、在 master 节点进入配置文件目录 

[root@master ~]# cd /opt/module/hbase/conf/

#在文件中修改 
[root @master conf]# vi hbase-env.sh 
#Java 安装位置 
export JAVA_HOME=/opt/module/jdk1.8.0_371
#值为 true 使用 HBase 自带的 ZooKeeper,值为 false 使用在 Hadoop 上装的 ZooKeeper  
export HBASE_MANAGES_ZK=false 
#HBase 类路径 
export HBASE_CLASSPATH=/opt/module/hadoop/etc/hadoop/ 

5、在 master 节点配置 hbase-site.xml

[zxb @master conf]# vi hbase-site.xml 
<property> 
<name>hbase.rootdir</name> 
<value>hdfs://master:9000/hbase</value> # 使用 9000 端口 
<description>The directory shared by region servers.</description> 
</property> 
<property> 
<name>hbase.master.info.port</name> 
<value>60010</value> 
# 使用 master 节点 60010 端口 
</property> 
<property> 
<name>hbase.zookeeper.property.clientPort</name> 
<value>2181</value> 
# 使用 master 节点 2181 端口 
<description>Property from ZooKeeper's config zoo.cfg. The port at 
which the clients will connect. 
</description> 
</property> 
<property> 
<name>zookeeper.session.timeout</name> 
<value>120000</value> 
# ZooKeeper 超时时间 
</property> 
<property> 
<name>hbase.zookeeper.quorum</name> 
<value>master,slave1,slave2</value> 
# ZooKeeper 管理节点 
</property> 
<property> 
<name>hbase.tmp.dir</name> 
<value>/opt/module/hbase/tmp</value> 
# HBase 临时文件路径 
</property> 
<property> 
<name>hbase.cluster.distributed</name> 
<value>true</value> 
# 使用分布式 HBase
</property> 

6、在 master 节点修改 regionservers 文件

#删除 localhost,每一行写一个 slave 节点主机机器名 
[zxb @master conf]$ vi regionservers 
slave1 
slave2

7、在 master 节点创建 hbase.tmp.dir 目录

[zxb @master ~]# mkdir /opt/module/hbase/tmp

8、将 master 上的 hbase 安装文件同步到 slave1 slave2

[zxb @master ~]# scp -r /opt/module/hbase/ zxb@slave1:/opt/module 
[zxb @master ~]# scp -r /opt/module/hbase/ zxb@slave2:/opt/module

9、在所有节点修改 hbase 目录权限

master 节点修改权限 (用zxb用户操作可以不用)
[root @master ~]# chown -R hadoop:hadoop /opt/module/hbase/ 
slave1 节点修改权限 
[root @slave1 ~]# chown -R hadoop:hadoop /opt/module/hbase/ 
slave2 节点修改权限 
[root @slave2 ~]# chown -R hadoop:hadoop /opt/module/hbase/ 

10、在所有节点配置环境和重启环境

vi /etc/profile
Source /etc/profile

11、启动hbase

先启动hadoop(start-all.sh),然后启动zookeeper(zkServer.sh start),最后启动Hbase(start-hbase.sh)

12、进入HBASE命令:hbase  shell

13、先创建一个表(score_list),且列族为info

导入数据,将文件先导入到/opt/modul目录下

使用以下命令上传文件
[zxb@master module]$ hdfs dfs -put "/opt/module/score.csv" /input

导入hbase
[zxb@master module]$ hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,info:student_ID,info:Process_score,info:Final_Score,info:Total_Mark score_list hdfs://192.168.229.100:9000/input/score.csv

HBase 客户端命令行中查看是否导入成功
hbase(main):003:0> scan 'score_list'

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

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

相关文章

【android 9】【input】【11.发送普通motion事件1——touch设备的加载——MultiTouchInputMapper】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录 …

传知代码-CENet及多模态情感计算实战(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 一、概述 本文对 “Cross-Modal Enhancement Network for Multimodal Sentiment Analysis” 论文进行讲解和手把手复现教学&#xff0c;解决当下热门的多模态情感计算问题&#xff0c;并展示在MOSI和MOSEI两个数…

labview经验分享1-任意16进制字符类型匹配

系列文章目录 1、任意16进制字符类型匹配 文章目录 系列文章目录问题导入实现任意16进制字符类型匹配在这里插入图片描述 总结 问题导入 labveiw的字符串匹配&#xff0c;使用的是正则表达式&#xff0c;可以让我们很方便的对字符串进行字符处理操作。 但是某些情况下&#…

WEB渗透Bypass篇-常规操作

绕过lsa-protection https://github.com/RedCursorSecurityConsulting/PPLKillerLinux绕过disable_function LD_PRELOAD linux环境 putenv()、mail()可用 https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD http://192.168.0.107/bypass_disablefunc.p…

一篇文章教你搭建一个高深莫测的SQL优化器

❓在数据库操作中&#xff0c;SQL优化一直是一个让人头疼的问题。今天&#xff0c;我将教你一种无需编写任何代码&#xff0c;只需要两个组件&#xff0c;便能轻松搭建一个高深莫测的SQL优化器的方法。通过这个方法&#xff0c;它可以将巨慢无比的SQL&#xff0c;把速度优化到极…

重启人生计划-浮舟沧海

&#x1f973;&#x1f973;&#x1f973; 茫茫人海千千万万&#xff0c;感谢这一刻你看到了我的文章&#xff0c;感谢观赏&#xff0c;大家好呀&#xff0c;我是最爱吃鱼罐头&#xff0c;大家可以叫鱼罐头呦~&#x1f973;&#x1f973;&#x1f973; 如果你觉得这个【重启人生…

VIM复合命令

VIM提供了很多 复合命令&#xff0c;可以把两个动作合并为一次按键。极大提高了编辑效率。以下是一些具体的例子&#xff1a; 复合命令等效的长命令说明Cc$删除光标到行尾scl删除光标位置的字符S^C删除整行I^i光标移动到行首A$a光标移动到行尾oA 回车光标下方开启一行Oko光标…

一文掌握SOP搭建步骤方法

如果你正在阅读这篇文章&#xff0c;那么你很可能在寻找如何为你的企业编写标准操作程序&#xff08;SOP&#xff09;的指导&#xff0c;以确保更好的流程被传达给你的团队并且得到遵循。 为什么SOPs很重要 SOPs必须清晰地传达你的业务流程&#xff0c;以标准化操作并确保盈利性…

Vue2 消息订阅与发布

1.pubsub-js 第三方库实现 实现任何框架的消息订阅发布 npm i pubsub-js <template><div class"student"><h2>展示学生的名称:{{ name }}</h2><h2>展示学生的性别:{{ sex }}</h2></div> </template><script>…

浏览器插件利器--allWebPluginV2.0.0.16-Stable版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

ollama使用llama3.1案例

ollama安装和运行llama3.1 8b conda create -n ollama python3.11 -y conda activate ollama curl -fsSL https://ollama.com/install.sh | sh ollama run songfy/llama3.1:8b 就这么简单就能运行起来了. 我们可以在命令行中与他交互. 当然我们也可以用接口访问: curl http:…

在IDEA中用自带的数据库 连接 redis 失败(JedisAccessControlException)

文章目录 1、问题出现的背景2、分析问题出现的原因3、解决办法不用输入用户名直接输入密码即可 1、问题出现的背景 redis.clients.jedis.exceptions.JedisAccessControlException: WRONGPASS invalid username-password pair or user is disabled.2、分析问题出现的原因 查看…

智慧水务项目(六)PyScada学习一,初步建立项目并测试

一、说明 Pyscada是scada的python实现&#xff0c;需要学习一下&#xff0c;以备不时之需&#xff0c;目前我的想法是用他来模拟opc数据&#xff0c;毕竟我准备做的项目需要系统与scada通过opc进行通信&#xff0c;正好做一个简单的scada系统 是一个开源的SCADA&#xff08;S…

记录|C#主界面设计【Web风格】

目录 前言一、页面效果二、布局设计2.1 左边菜单栏搭建框架Step1. panelMenu &#xff1a;Step2. panelLogoStep3. button模板Step4. 复制buttonStep5. 微调Button 2.2 界面颜色变换Step1. ThemeColor类Step2. From1.csStep3. 更换按钮点击颜色效果 2.3 按钮点击事件2.4 顶部ti…

十、Linux二进制安装ClickHouse集群(含rpm安装)

目录 十、Linux二进制安装ClickHouse集群(含rpm安装&#xff0c;单机版使用rpm&#xff0c;集群使用tar包安装方式)1 部署前服务器配置&#xff08;集群的话三台都要配置&#xff09;1.2 配置hosts文件1.3 打开文件数限制1.4 取消 SELINUX1.5 禁用透明大页 2 下载所需文件2.1 t…

24/8/14算法笔记 复习_支持向量机svc

支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种强大的监督学习模型&#xff0c;用于分类、回归甚至异常检测。它基于统计学习理论&#xff0c;特别关注找到数据的最佳分隔超平面。 import numpy as np import matplotlib.pyplot as pltfrom sklearn.sv…

vue3 antdv a-datepicker 修改datepicker 的panel宽度,初始弹出一些正常,但再次弹出,宽度就再次变小的解决

1、展示页面的框架结构&#xff1a; 2、然后&#xff0c;我们上二张图对比一下&#xff1a; 图1-1 需要的效果图&#xff1a; 图1-2 对比一下图1-1与图1-2&#xff0c;我们就会发现图1-1中的农历&#xff0c;换行显示了&#xff0c;第二张是有效的。 3、我们修改样式&#x…

秋招突击——8/15——知识补充——垃圾回收机制

文章目录 引言正文指针引用可达性分析算法垃圾回收算法标记清除算法标记整理算法复制分代收集 垃圾收集器Serial收集器ParNew并行收集器Parallel Scavenge吞吐量优先收集器Serial Old老年代收集器Parallel old收集器CMS收集器G1收集器&#xff08;Garbage First垃圾优先&#x…

关于堆的介绍

1.堆的概念及结构 如果有一个关键码的集合&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中&#xff0c;并满足&#xff1a;且则称为小堆&#xff08;或大堆&#xff09;。将根节点最大的堆叫做最大堆或者大根堆&#xff0c;根节点最小的堆叫做最小…

【Linux】:进程控制(创建、终止、等待、替换)

目录 1.进程创建 2.进程终止&#xff08;退出&#xff09; 2.1 什么是进程终止 2.2 进程退出的场景&#xff08;原因&#xff09; 2.3 进程退出码 2.4 错误码errno 2.5 进程常见的退出方法 正常终止 从main函数返回 调用库函数exit 系统接口_exit 3.进程等待 3.1 …