Hadoop 本地伪分布式部署

Hadoop

Hadoop 是Apache基金会提供的一个开源的分布式存储和分析计算平台。它为我们提供了一个可靠的且可扩展的存储分析平台,可靠性在于它的数据备份带来的安全,可扩展在于其分布式存储特性,通过增加存储节点来扩展存储上限。

分布式思想

用更多更便宜的机器打败单一的更贵的机器。分布式的系统可以通过量的堆积实现硬件资源的扩展。而hadoop负责实现将分布式的机器捆绑到一起,上层无需关心这部分的具体实现,对上层显示的就是一个捆绑了众多机器的硬件资源的一个大机器。

Hadoop官网

http://hadoop.apache.org

Hadoop生态系统

底层是HDFS文件系统,然后通过flume,sqoop,kafka等框架采集信息存储到HDFS中,对HDFS的数据,上层Yarn负责统一的资源管理,还有一些计算框架等等。

Hadoop本地伪分布式部署

本地部署hadoop只需要本地机器和虚拟机系统,是一种伪分布式系统,因为其物理上的硬件仍然在同一台机器,主要用于调试MapReducem,适合在开发初期进行配置。

配置前基本配置信息检查

配置

说明

宿主机系统

windows 11

虚拟机操作系统

centos 7

虚拟机软件

VMware

ssh 工具

Xshell 8.0(school for free)

软件包上传路径

/root/softwares

软件安装路径

/usr/local

JDK

jdk1.8

Hadoop

hadoop-3.4.1

由于虚拟机会占用大量的磁盘空间,故最好首先在VMware上修改工作区目录。具体修改方式为:编辑--首选项--工作区--虚拟机的默认位置。除此之外可以给虚拟机的内存空间调大使其具备一定灵活性,设置为主机预留最小内存为主机内存的一半:编辑--首选项--内存--预留内存。

虚拟网络部署

创建虚拟网络模块选择NAT协议网络为了保证虚拟机ip地址固定我们需要修改三个地方一个VMwareNAT网络设置一个宿主机windows网络设置还有一个虚拟机内部配置

VMware

首先打开虚拟网络编辑器然后点击 [更改设置]

这里我们NAT模式子网IP设置192.168.10.0网段指示NAT协议虚拟机ip分配这个网段同时NAT设置】需要设置192.168.10.2网关最后一位一般2然后点击确定】应用设置

windows:

上面vmware配置我们可以看到NAT模式是VMnet8这块网卡然后我们需要windows修改这块网卡网络适配选项设置搜索-更改网络适配器设置】然后找到VMnet8点击更多属性设置对应网关首选DNS备用DNS可以填写8.8.8.8公共域名解析

VM Machine:

虚拟里面我们需要进到配置文件里面网卡配置文件在

/etc/sysconfig/network-scripts/ifcfg-ens33

文件网卡设备可以通过ifconfig命令查看虚拟机网络信息然后找到正确网卡名字就是我们更改配置文件

这里可以看到第一块网卡就是连接外部网络网卡名为ens33

通过vim命令打开配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33

原先BOOTPROTODHCP指示ip地址动态分配这里我们改成静态分配 BOOTPROTO='static'除此之外ip地址网关以及DNS地址设置:

IPADDR=192.168.10.100
PREFEX=24
GATEWAY=192.168.10.2
DNS1=192.168.10.2

然后保存退出之后运用systemctl重启网络

systemctl restart network

然后ping一下百度宿主机相互ping说明配置成功

ping baidu.com
ping 10.69.36.231 //这是本机ip 地址

能够ping配置成功】

除此之外为了便于我们识别访问不同结点我们会对本机其他结点命名由于本次实验单一结点的伪分布式我们只需要修改hostname就好

【vim编辑hostname文件】

vim /etc/hostname

修改本机设备标识hadoop100如图所示

保存退出重启机器终端输入hostname查看修改是否成功

reboot
hostname

修改成功

虚拟本机免密

配置hadoop集群需要涉及跨机器数据传输为了高效机器访问数据需要不同节点配置免密登录

  1. ssh秘钥生成, 使用rsa算法生成秘钥
ssh-keygen -t rsa
  1. 秘钥生成之后会在用户home目录生成一个.ssh隐藏文件夹进入这个文件夹有两个文件
cd ~/.ssh
ls -l
-rw-------. 1 root root 1675 1130 03:22 id_rsa
-rw-r--r--. 1 root root  396 1130 03:22 id_rsa.pub
  1. 使用ssh-copy-id指令传输秘钥远程机器这里我们节点伪分布式传输本机host后续如果直接输入其他设备标识传输还需要/etc/hosts文件里面编辑添加设备ip地址设备映射如:
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

这里我们直接秘钥传到本机就好

ssh-copy-id hadoop100

然后一直回车或者输入yes,这时候目标即本机).ssh目录出现两个文件一个验证文件authorized_keys另一个known_hosts前者用来验证其他机器免密登录私钥后者标识本设备登录哪些节点

至此免密登录配置通过ssh hadoop100确定是否需要密码登录不需要密码说明配置成功

hadoop软件环境配置

hadoop使用java编写程序必然节点安装java环境这里我们使用java1.8环境自己安装而不是yum命令因为hadoop检查JAVA_HOME环境变量如果没有配置hadoop是会运行报错

【java1.8环境配置

首先找到华为java镜像网站

https://repo.huaweicloud.com/java/jdk/

里面找到最新java8版本8u202-b08

然后选择linux需要x64压缩包:jdk-8u202-linux-x64-tar.gz

https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz

虚拟机cd软件存放目录,并解压软件包:

cd /root/softwares //这是我提前创建的,没有的话需要创建
wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local //-C解压重定向到软件安装目录
mv /usr/local/jdk1.8.0_202 /usr/local/jdk-1.8.0 //改个名称

然后配置系统环境变量

vim /etc/profile

插入以下几行(必须):

export JAVA_HOME=/usr/local/jdk-1.8.0 #注意等号两边不要有空格
export PATH=$PATH:$JAVA_HOME/bin

随后保存退出source命令激活

source /etc/profile

java -version看一下是否配置成功

java -version

配置成功】

hadoop环境配置】

我们首先去到清华hadoop镜像下载hadoop3.4.1

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.4.1/hadoop-3.4.1.tar.gz

下载之后,复制到虚拟机注意vmware复制功能不是很好用文件大部分winscpscp工具复制文件

我们已经复制文件~/softwares目录之后解压软件

tar -zxvf hadoop-3.4.1.tar.gz -C /usr/local/

然后配置环境变量信息

vim /etc/profile

插入以下环境变量:

#hadoop_home
export HADOOP_HOME=/usr/local/hadoop-3.4.1
export PATH=$PATH:$HADOOP_HOME/sbin //集群管理脚本
export PATH=$PATH:$HADOOP_HOME/bin //hdfs基本指令

同样退出保存source激活

source /etc/profile

输入hadoop命令查看是否配置成功

hadoop version

出现如上结果代表配置成功】

hadoop集群启动配置信息

cd hadoop安装目录

cd $HADOOP_HOME //这里之前在环境变量已经配置好了没有配置需要自己安装路径
ls
bin  include  libexec         licenses-binary  logs           NOTICE.txt  sbin   tmp
etc  lib      LICENSE-binary  LICENSE.txt      NOTICE-binary  README.txt  share

这里我们需要修改etc配置信息cd对应目录

cd etc/hadoop/

这里主要修改三个文件core-site.xml,hdfs-site.xml,hadoop.env.sh

vim core-site.xml

插入以下信息

<configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop100:9820</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop-3.4.1/tmp</value>
    </property>
</configuration>

同理针对hdfs-site.xml插入以下信息

<configuration>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop100:9868</value>
    </property>

    <property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop100:9870</value>
    </property>
</configuration>

这里9870主节点的http访问端口可以web通过hadoop100ip地址9870端口查看集群和hdfs的信息

replication备份意思表示每个节点的文件备份这里伪分布式备份几份没有意义简单设置1即可

最后针对hadoop.env.sh添加如下信息

##JAVA_HOME
export JAVA_HOME=/usr/local/jdk-1.8.0

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

这里指示JAVA_HOME以及主节点,次节点数据节点登录用户角色,这里设置为root确保最高权限。

全部配置完成保存退出

启动集群

格式集群(格式化集群之前保证我们在core-site.xml里面设置hadoop.tmp.dir目录不存如果存在要么删掉要么重新设置一个不存在目录),相当于初始化

hdfs namenode -format

输入以下命令启动集群

start-dfs.sh
jps //查看确实有对应java进程的运行

集群启动之后就可以通过浏览器访问对应端口访问hadoop集群

http://192.168.10.100:9870/

点击Utilities-Browse the file system 查看hdfs文件系统:

如果浏览器有界面则说明集群【启动成功】

词频统计案例-hdfs测试案例

这里我们通过一个官方案例使用hdfs

首先我们构建输入文件夹

cd ~
mkdir input 
cd input
echo "a b c d e f g" >> file1 //file1一些初始输入
for i in {1..100};do cat file1 >> file2; done//file1内容拷贝100file2,注意;位置
ls -l

hdfs不是linux文件系统所以我们需要input文件夹上传hdfs里面才能使用

上传指令 -put

cd ..
hdfs dfs -put input /input

在浏览器已经可以看到我们input文件夹

然后运行hdfs案例jar实现词频统计

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.jar wordcount /input /output

注意我们刚刚input文件夹放到hdfs/input所以这里实际上的输入/input 输出/output,执行确保输出目录不存在否则无法执行

等待执行结束之后查看文件

hdfs dfs -cat /output/*

MapReduce成功利用hdfs执行词频统计功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值