

hadoop集群搭建——单节点(伪分布式) - 落月_YU
source link: https://www.cnblogs.com/xiao-yu-/p/16410152.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1. 准备工作:
前提:需要电脑安装VM,且VM上安装一个Linux系统
注意:本人是在学习完尚学堂视频后,结合自己的理解,在这里做的总结。学习的视频是:大数据。
为了区分是在哪一台机器做的操作,eg:- - - Linux 表示在Linux上做的操作。
2. 以下是教程, 首先是准备工作:
2.1 配置网络:
(1) 配置网卡文件:
- - - Linux:
cd /etc/sysconfig/network-scripts/ vi ifcfg-eth0 # interface config { # HWADDR="00:0C:29:92:E5:B7" # 注释这个,虚拟机需要注释掉,公司不需要 # UUID="2d678a8b-6c40-4ebc-8f4e-245ef6b7a969" ONBOOT="yes" # 机器启动时候网卡启动 BOOTPROTO=static # 使用静态地址 IPADDR=192.168.9.8 NETMASK=255.255.255.0 GATEWAY=192.168.9.2 DNS1=114.114.114.114 }
- - - VMware:
虚拟网络编辑器 -> Net设置 -> 网关IP 192.168.9.2 子网IP:192.168.9.0 子网掩码255.255.255.0 端口转发:192.168.9.128(主机的) 将主机虚拟适配器连接到此网络;# 主机Windows,虚拟适配器->WMnet8(虚拟网卡)
- - - Linux:
service network restart
测试:
Linux 是否能上网 : ping baidu.com Linux ping 主机: ping 192.168.9.128 主机pingLinux:ping 192.168.9.2
- - - Windows:
# VMnet8 IP地址:192.168.9.128 子网掩码:255.225.255.0 DNS:和网关一样或者114.114.114.114 or 8.8.8.8
(2) 关闭虚拟机防火墙(企业的话不关闭):
- - - Linux:
service iptables stop # 临时关闭,防护墙属于服务,重新开机后又会启动 chkconfig iptables off # 永久关闭 chkconfig # 看iptables(命令行是3,图形模式是5) windows -> 管理 -> 服务
(3) 关闭SELINUX
- - - Linux:
cd /etc/selinux/ vi config { SELINUX=disabled }
(4) DNS 域名解析
- - - Linux:
vi /etc/hosts { 192.168.9.11 node01 192.168.9.12 node02 192.168.9.13 node03 192.168,9.14 node04 }
(5) 删除Mac地址,不然当现在这个使用eth0时候,另一个就是eth1了,又的重新配置
- - - Linux:
cd /etc/udev/rules.d/ cat 70-persistent-net.rules # 右键虚拟机 ->网络适配器 ->高级->Mac地址 -> 00:0C:29:96:95:65 rm -f 70-persistent-net.rules # 为了克隆
(6) poweroff(克隆前别启动)
小扳手 -> 拍摄快照 -> basic basic -> 克隆 -> 现有快照 -> 创建链接克隆 (克隆之前Mac地址是一样的,但是启动之后就不一样了)
之后这个作为样板机,克隆出4台机器为:node01、node02、node03、node04
2.2 配置其余:
- - - Linux - node01:
vi /etc/sysconfig/network-scripts/ifcfg-eth0 { IPADDR=192.168.9.11 } vi /etc/sysconfig/network # 改完重启后才会有效 { NETWORKING=yes HOSTNAME=node01 } vi /etc/hosts poweroff
- - - Linux - node02:
vi /etc/sysconfig/network-scripts/ifcfg-eth0 { IPADDR=192.168.9.12 } vi /etc/sysconfig/network { NETWORKING=yes HOSTNAME=node02 } vi /etc/hosts poweroff
node03、node04的地址是13、14,HOSTNAME改为对应的;
- - - Windows:修改hosts文件:
C:\Windows\System32\drivers\etc { 192.168.9.11 node01 192.168.9.12 node02 192.168.9.13 node03 192.168.9.14 node04 }
3. 接着是hadoop的配置:
参考网址:
# -> https://hadoop.apache.org/docs/r2.6.5/
# -> https://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/SingleCluster.html
3.1 检查hosts和网络(检查上面的):
cat /etc/hosts hostname cat /etc/sysconfig/network
3.2 免密钥登录:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa # 创建密钥公钥文件(dsa类型) id_dsa id_dsa.pub cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys # 读取家目录的公钥文件然后重定向追加到到authorized_keys(将共钥放到访问方的认证文件里)(不要多次执行,重复执行了把authorized_keys删除一次) cat authorized_keys id_dsa.pub # 检查是否一样,公钥和私钥 ssh root@localhost # 登录自己 exit ssh root@node01
3.3 安装jdk
参考网址:
# https://blog.csdn.net/m0_54849806/article/details/123772220
# https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
准备:jdk-8u251-linux-i586.tar.gz(32位的jdk)
mkdir /usr/java mv /root/Downloads/jdk-8u251-linux-i586.tar.gz /usr/java/ tar -zxvf /usr/java/jdk-8u251-linux-i586.tar.gz # 配置profile文件 vi /etc/profile { export JAVA_HOME=/usr/java/jdk1.8.0_251/ export PATH=$PATH:$JAVA_HOME/bin # 先取出老的path,再拼接(:) } # 检查 source /etc/profile # 也可是 . /etc/profile java -version whereis java jps
3.4 安装hadoop
准备:hadoop-2.5.2.tar.gz
mkdir /usr/hadoop/ mv /root/Downloads/hadoop-2.5.2.tar.gz /usr/hadoop/ tar -zxvf /usr/hadoop/hadoop-2.5.2.tar.gz cd /usr/hadoop/hadoop-2.5.2/ # sbin bin vi /etc/profile { export JAVA_HOME=/usr/java/jdk1.8.0_251/ export HADOOP_HOME=/usr/hadoop/hadoop-2.5.2/ export PATH=$PATH:$JAVA_HOME/bin/:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin/ } . /etc/profile hadoop # hdfs start # Tab
3.5 改Hadoop的配置文件
3.5.1 配置 env.sh文件:
cd /usr/hadoop/hadoop-2.5.2/etc/hadoop/ vi hadoop-env.sh # 如果/etc/profile文件没有执行,${JAVA_HOME}不能取出值,所以需要二次的javahoem环境配置; { export JAVA_HOME=/usr/java/jdk1.8.0_251/ } vi mapred-env.sh { export JAVA_HOME=/usr/java/jdk1.8.0_251/ } vi yarn-env.sh { export JAVA_HOME=/usr/java/jdk1.8.0_251/ }
3.5.2 配置 Configuration:
vi core-site.xml { <configuration> <property> <name>fs.defaultFS</name> # 决定Namenode在哪启动 (文件系统的入口:NameNode) <value>hdfs://node01:9000</value> # NameNode以哪个机器哪个端口启动的,见到localhost反感,换成自己的名字:node01; </property> </configuration> }
vi hdfs-site.xml { <configuration> <property> <name>dfs.replication</name> <value>1</value> # 配置1个副本,伪分布式,节点只有一个,副本不能出现同一节点。 </property> </configuration> }
# 以上仅仅配置了NameNode节点在哪?在哪启动?
# 配置DataNode
vi slaves { node01 # datanode在哪启动。(localhost, 集群的话这边有多个) }
vi core-site.xml { <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/var/sxt/hadoop/local/</value> # Namenode的持久化目录;修改namenode存放持久化元数据文件的存放目录;(这个目录是空的也没事,自己创建的) </property> </configuration> }
i hdfs-site.xml { <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> # secondarynamenode在哪启动 <value>node01:50090</value> </property> </configuration> }
3.6 格式化文件系统(只要一次)
hdfs namenode -format # 执行前后jps不会有变化;而且会创建/var/sxt/hadoop/local/;注意报错不搞错都会输出一大堆东西; # Storage directory /var/sxt/hadoop/local/dfs/name has been successfully formatted. cd /var/sxt/hadoop/local/dfs/name/ cd current/ ll { -rw-r--r-- 1 root root 351 Jun 10 05:18 fsimage_0000000000000000000 -rw-r--r-- 1 root root 62 Jun 10 05:18 fsimage_0000000000000000000.md5 -rw-r--r-- 1 root root 2 Jun 10 05:18 seen_txid -rw-r--r-- 1 root root 205 Jun 10 05:18 VERSION } cat VERSION { #Fri Jun 10 05:18:49 PDT 2022 namespaceID=1178112766 clusterID=CID-3ba8cea9-4994-4ad6-aff6-b159d0f716d1 cTime=0 storageType=NAME_NODE blockpoolID=BP-2116590704-192.168.9.11-1654863529163 # 连接池 layoutVersion=-57 # 在namenode这边有这些数据了 }
3.7 开始 # 看日志文件看.log
start-dfs.sh { Java HotSpot(TM) Client VM warning: You have loaded library /usr/hadoop/hadoop-2.5.2/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. 22/06/10 05:28:46 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Starting namenodes on [node01] node01: starting namenode, logging to /usr/hadoop/hadoop-2.5.2/logs/hadoop-root-namenode-node01.out node01: Java HotSpot(TM) Client VM warning: You have loaded library /usr/hadoop/hadoop-2.5.2/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. node01: It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. node01: starting datanode, logging to /usr/hadoop/hadoop-2.5.2/logs/hadoop-root-datanode-node01.out Starting secondary namenodes [node01] node01: starting secondarynamenode, logging to /usr/hadoop/hadoop-2.5.2/logs/hadoop-root-secondarynamenode-node01.out node01: Java HotSpot(TM) Client VM warning: You have loaded library /usr/hadoop/hadoop-2.5.2/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. node01: It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. Java HotSpot(TM) Client VM warning: You have loaded library /usr/hadoop/hadoop-2.5.2/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. 22/06/10 05:29:01 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable }
jps # 角色即目录 { 4829 DataNode 4974 SecondaryNameNode 4718 NameNode 5087 Jps }
cd /var/sxt/hadoop/local/dfs/ ll # 对于完全分布式的话:第一台只能看到name,第二台只能看到data; { total 12 drwx------ 3 root root 4096 Jun 10 05:28 data # drwxr-xr-x 3 root root 4096 Jun 10 05:28 name # 格式化产生的 drwxr-xr-x 3 root root 4096 Jun 10 05:28 namesecondary }
3.8 说明
cd /var/sxt/hadoop/local/dfs/name/current/ cat VERSION { #Fri Jun 10 05:18:49 PDT 2022 namespaceID=1178112766 clusterID=CID-3ba8cea9-4994-4ad6-aff6-b159d0f716d1 # 集群开始时候DttaNonde跟随namenode(就是两者的clusterID一样);格式化时候只会格式化namenode,datanode不会变化;如果重新格式化的话,datanode会找不到namenode,然后自杀,进程退出,找不到主人,自杀; cTime=0 # 如果发现启动后datanode不见了,第一反应就是这个clusterID不一样,datanode自杀了; storageType=NAME_NODE # datanode上面的VERSION文件什么时候创建的?在namenode格式化后,datanode第一次启动与namenode交互后产生的。namenode授权给他的。 blockpoolID=BP-2116590704-192.168.9.11-1654863529163 layoutVersion=-57 }
cd /var/sxt/hadoop/local/dfs/data/current/ cat VERSION { #Fri Jun 10 05:28:54 PDT 2022 storageID=DS-6f5b9506-8a9c-4daa-99b9-5acdb21cf00d clusterID=CID-3ba8cea9-4994-4ad6-aff6-b159d0f716d1 # 集群开始时候DttaNonde跟随namenode(就是两者的clusterID一样) cTime=0 datanodeUuid=fa96bb92-0d4a-488c-87a9-649a1481f49d storageType=DATA_NODE layoutVersion=-55 }
http://node01:50070/ # 浏览器;9000是rpc间通信用的,不是web的,做心跳,传输数据; { Overview 'node01:9000' (active) Live Nodes 1 (Decommissioned: 0) Utilities -> 浏览文件系统 -> / # hadoop的根目录 }
hdfs # 查看后面可以接收什么参数 hdfs dfs # 提示 hadoop fs == hdfs dfs hdfs dfs -mkdir -p /user/root # 创建用户目录,root;可以在:Utilities -> 浏览文件系统 -> 查看(/user/root 相当于Linux的home) cd /usr/hadoop/ hdfs dfs -put ./hadoop-2.5.2.tar.gz /user/root # 上传文件: 同样在:Utilities -> 浏览文件系统 -> 查看 # Permission Owner Group Size(实际大小) Replication Block Size(块大小) Name # 可以点击文件,看见文件被切成两个块
3.9 作业
for i in `seq 100000`;do echo "hello world $i" >> test.txt;done ll -h ./ hdfs dfs -D dfs.blocksize=1048576 -put ./test.txt /user/root # 1M /var/sxt/hadoop/local/dfs/data/current/BP-2116590704-192.168.9.11-1654863529163/current/finalized ll { -rw-r--r-- 1 root root 134217728 Jun 10 06:00 blk_1073741825 # 压缩包 数据 -rw-r--r-- 1 root root 1048583 Jun 10 06:00 blk_1073741825_1001.meta # 压缩包 元数据 -rw-r--r-- 1 root root 12979764 Jun 10 06:00 blk_1073741826 # 压缩包 数据 -rw-r--r-- 1 root root 101415 Jun 10 06:00 blk_1073741826_1002.meta # 压缩包 元数据 -rw-r--r-- 1 root root 1048576 Jun 10 06:15 blk_1073741827 # test文件 数据 -rw-r--r-- 1 root root 8199 Jun 10 06:15 blk_1073741827_1003.meta # test文件 元数据 -rw-r--r-- 1 root root 740319 Jun 10 06:15 blk_1073741828 # test文件 数据 -rw-r--r-- 1 root root 5791 Jun 10 06:15 blk_1073741828_1004.meta # test文件 元数据 } stop-dfs.sh # 关闭
Recommend
-
36
希望文章能帮助更多的人在搭建集群时,节省更多的时间,将时间花在更有意思的地方,帮助大家能尽早开始体验hadoop的各种功能。
-
58
hadoop集群搭建3台机器
-
42
一、基础环境配置 1、三台服务 准备三台Centos7服务,基础环境从伪分布式环境克隆过来。 133 hop01,134 hop02,136 hop03 2、设置主机名 ...
-
17
redission-java连接redis的客户端-redis单节点,哨兵和集群模式 发表于
-
19
Jedis-java连接redis的客户端-redis单节点,哨兵和集群模式 发表于
-
5
本文讲述了如何使用Docker快速部署单节点Hadoop,Hadoop版本为2.7; https://github.com/JasonkayZK/docker_repo/tree/hadoop-v2.7-single
-
7
搭建一个Hadoop环境是学习大数据技术的第一步,这个环境可以是单机的,也可以是伪集群的,但最贴近实际生产环境的还是真集群的版本。本文提供一个基于AWS搭建Hadoop的简要指南,基于AWS EC2 Ubuntu 20。如果你也用的是AWS的免费套餐,几个注意的地方: ...
-
1
Hadoop 分布式集群部署 原创 一、集群环境说明 1、主机规划 IP地址 角色 HDFS YARN 10.6.2.237 ma...
-
10
Apache Hadoop 分布式集群搭建 基础环境准备 三台 linux 节点,操作系统(Centos7) 关闭防火墙 systemctl stop firewalld...
-
8
我在自己的 MAC 搭建了一个单节点的 K8S 集群,本机使用调试连接完全正常 3 条回复 • 2022-12-22 13:20:04 +08:00 gzk...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK