1. 准备工作:

前提:需要电脑安装VM,且VM上安装一个Linux系统

注意:本人是在学习完尚学堂视频后,结合自己的理解,在这里做的总结。学习的视频是:大数据

为了区分是在哪一台机器做的操作,eg:- - - Linux 表示在Linux上做的操作。

2. 以下是教程, 首先是准备工作:

2.1 配置网络:

(1) 配置网卡文件:

- - - Linux:

  1. cd /etc/sysconfig/network-scripts/
  2. vi ifcfg-eth0 # interface config
  3. {
  4. # HWADDR="00:0C:29:92:E5:B7" # 注释这个,虚拟机需要注释掉,公司不需要
  5. # UUID="2d678a8b-6c40-4ebc-8f4e-245ef6b7a969"
  6. ONBOOT="yes" # 机器启动时候网卡启动
  7. BOOTPROTO=static # 使用静态地址
  8. IPADDR=192.168.9.8
  9. NETMASK=255.255.255.0
  10. GATEWAY=192.168.9.2
  11. DNS1=114.114.114.114
  12. }

- - - VMware:

  1. 虚拟网络编辑器 -> Net设置 -> 网关IP 192.168.9.2 子网IP192.168.9.0 子网掩码255.255.255.0 端口转发:192.168.9.128(主机的)
  2. 将主机虚拟适配器连接到此网络;# 主机Windows,虚拟适配器->WMnet8(虚拟网卡)

- - - Linux:

  1. service network restart

测试:

  1. Linux 是否能上网 ping baidu.com
  2. Linux ping 主机: ping 192.168.9.128
  3. 主机pingLinuxping 192.168.9.2

- - - Windows:

  1. # VMnet8
  2. IP地址:192.168.9.128
  3. 子网掩码:255.225.255.0
  4. DNS:和网关一样或者114.114.114.114 or 8.8.8.8

(2) 关闭虚拟机防火墙(企业的话不关闭):

- - - Linux:

  1. service iptables stop # 临时关闭,防护墙属于服务,重新开机后又会启动
  2. chkconfig iptables off # 永久关闭
  3. chkconfig # 看iptables(命令行是3,图形模式是5) windows -> 管理 -> 服务

(3)  关闭SELINUX

- - - Linux:

  1. cd /etc/selinux/
  2. vi config
  3. {
  4. SELINUX=disabled
  5. }

(4) DNS 域名解析

- - - Linux:

  1. vi /etc/hosts
  2. {
  3. 192.168.9.11 node01
  4. 192.168.9.12 node02
  5. 192.168.9.13 node03
  6. 192.168,9.14 node04
  7. }

(5) 删除Mac地址,不然当现在这个使用eth0时候,另一个就是eth1了,又的重新配置

- - - Linux:

  1. cd /etc/udev/rules.d/
  2. cat 70-persistent-net.rules # 右键虚拟机 ->网络适配器 ->高级->Mac地址 -> 00:0C:29:96:95:65
  3. rm -f 70-persistent-net.rules # 为了克隆

(6) poweroff(克隆前别启动)

  1. 小扳手 -> 拍摄快照 -> basic
  2. basic -> 克隆 -> 现有快照 -> 创建链接克隆
  3. (克隆之前Mac地址是一样的,但是启动之后就不一样了)

之后这个作为样板机,克隆出4台机器为:node01、node02、node03、node04

2.2 配置其余:

- - - Linux - node01:

  1. vi /etc/sysconfig/network-scripts/ifcfg-eth0
  2. {
  3. IPADDR=192.168.9.11
  4. }
  5. vi /etc/sysconfig/network # 改完重启后才会有效
  6. {
  7. NETWORKING=yes
  8. HOSTNAME=node01
  9. }
  10. vi /etc/hosts
  11. poweroff

- - - Linux - node02:

  1. vi /etc/sysconfig/network-scripts/ifcfg-eth0
  2. {
  3. IPADDR=192.168.9.12
  4. }
  5. vi /etc/sysconfig/network
  6. {
  7. NETWORKING=yes
  8. HOSTNAME=node02
  9. }
  10. vi /etc/hosts
  11. poweroff

node03、node04的地址是13、14,HOSTNAME改为对应的;

- - - Windows:修改hosts文件:

  1. C:\Windows\System32\drivers\etc
  2. {
  3. 192.168.9.11 node01
  4. 192.168.9.12 node02
  5. 192.168.9.13 node03
  6. 192.168.9.14 node04
  7. }

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和网络(检查上面的):

  1. cat /etc/hosts
  2. hostname
  3. cat /etc/sysconfig/network

3.2 免密钥登录:

  1. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa # 创建密钥公钥文件(dsa类型) id_dsa id_dsa.pub
  2. cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys # 读取家目录的公钥文件然后重定向追加到到authorized_keys(将共钥放到访问方的认证文件里)(不要多次执行,重复执行了把authorized_keys删除一次)
  3. cat authorized_keys id_dsa.pub # 检查是否一样,公钥和私钥
  4. ssh root@localhost # 登录自己
  5. exit
  6. 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

  1. 准备:jdk-8u251-linux-i586.tar.gz32位的jdk
  1. mkdir /usr/java
  2. mv /root/Downloads/jdk-8u251-linux-i586.tar.gz /usr/java/
  3. tar -zxvf /usr/java/jdk-8u251-linux-i586.tar.gz
  4. # 配置profile文件
  5. vi /etc/profile
  6. {
  7. export JAVA_HOME=/usr/java/jdk1.8.0_251/
  8. export PATH=$PATH:$JAVA_HOME/bin # 先取出老的path,再拼接(:)
  9. }
  10. # 检查
  11. source /etc/profile # 也可是 . /etc/profile
  12. java -version
  13. whereis java
  14. jps

3.4 安装hadoop

  1. 准备:hadoop-2.5.2.tar.gz
  1. mkdir /usr/hadoop/
  2. mv /root/Downloads/hadoop-2.5.2.tar.gz /usr/hadoop/
  3. tar -zxvf /usr/hadoop/hadoop-2.5.2.tar.gz
  4. cd /usr/hadoop/hadoop-2.5.2/ # sbin bin
  5. vi /etc/profile
  6. {
  7. export JAVA_HOME=/usr/java/jdk1.8.0_251/
  8. export HADOOP_HOME=/usr/hadoop/hadoop-2.5.2/
  9. export PATH=$PATH:$JAVA_HOME/bin/:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin/
  10. }
  11. . /etc/profile
  12. hadoop # hdfs start # Tab

3.5 改Hadoop的配置文件

3.5.1 配置 env.sh文件:

  1. cd /usr/hadoop/hadoop-2.5.2/etc/hadoop/
  2. vi hadoop-env.sh # 如果/etc/profile文件没有执行,${JAVA_HOME}不能取出值,所以需要二次的javahoem环境配置;
  3. {
  4. export JAVA_HOME=/usr/java/jdk1.8.0_251/
  5. }
  6. vi mapred-env.sh
  7. {
  8. export JAVA_HOME=/usr/java/jdk1.8.0_251/
  9. }
  10. vi yarn-env.sh
  11. {
  12. export JAVA_HOME=/usr/java/jdk1.8.0_251/
  13. }

3.5.2 配置 Configuration:

  1. vi core-site.xml
  2. {
  3. <configuration>
  4. <property>
  5. <name>fs.defaultFS</name> # 决定Namenode在哪启动 (文件系统的入口:NameNode)
  6. <value>hdfs://node01:9000</value> # NameNode以哪个机器哪个端口启动的,见到localhost反感,换成自己的名字:node01;
  7. </property>
  8. </configuration>
  9. }
  1. vi hdfs-site.xml
  2. {
  3. <configuration>
  4. <property>
  5. <name>dfs.replication</name>
  6. <value>1</value> # 配置1个副本,伪分布式,节点只有一个,副本不能出现同一节点。
  7. </property>
  8. </configuration>
  9. }

# 以上仅仅配置了NameNode节点在哪?在哪启动?

# 配置DataNode

  1. vi slaves
  2. {
  3. node01 # datanode在哪启动。(localhost, 集群的话这边有多个)
  4. }
  1. vi core-site.xml
  2. {
  3. <configuration>
  4. <property>
  5. <name>fs.defaultFS</name>
  6. <value>hdfs://node01:9000</value>
  7. </property>
  8. <property>
  9. <name>hadoop.tmp.dir</name>
  10. <value>/var/sxt/hadoop/local/</value> # Namenode的持久化目录;修改namenode存放持久化元数据文件的存放目录;(这个目录是空的也没事,自己创建的)
  11. </property>
  12. </configuration>
  13. }
  1. i hdfs-site.xml
  2. {
  3. <configuration>
  4. <property>
  5. <name>dfs.replication</name>
  6. <value>1</value>
  7. </property>
  8. <property>
  9. <name>dfs.namenode.secondary.http-address</name> # secondarynamenode在哪启动
  10. <value>node01:50090</value>
  11. </property>
  12. </configuration>
  13. }

3.6 格式化文件系统(只要一次)

  1. hdfs namenode -format # 执行前后jps不会有变化;而且会创建/var/sxt/hadoop/local/;注意报错不搞错都会输出一大堆东西;
  2. # Storage directory /var/sxt/hadoop/local/dfs/name has been successfully formatted.
  3. cd /var/sxt/hadoop/local/dfs/name/
  4. cd current/
  5. ll
  6. {
  7. -rw-r--r-- 1 root root 351 Jun 10 05:18 fsimage_0000000000000000000
  8. -rw-r--r-- 1 root root 62 Jun 10 05:18 fsimage_0000000000000000000.md5
  9. -rw-r--r-- 1 root root 2 Jun 10 05:18 seen_txid
  10. -rw-r--r-- 1 root root 205 Jun 10 05:18 VERSION
  11. }
  12. cat VERSION
  13. {
  14. #Fri Jun 10 05:18:49 PDT 2022
  15. namespaceID=1178112766
  16. clusterID=CID-3ba8cea9-4994-4ad6-aff6-b159d0f716d1
  17. cTime=0
  18. storageType=NAME_NODE
  19. blockpoolID=BP-2116590704-192.168.9.11-1654863529163 # 连接池
  20. layoutVersion=-57 # 在namenode这边有这些数据了
  21. }

3.7 开始 # 看日志文件看.log

  1. start-dfs.sh
  2. {
  3. 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.
  4. It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
  5. 22/06/10 05:28:46 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  6. Starting namenodes on [node01]
  7. node01: starting namenode, logging to /usr/hadoop/hadoop-2.5.2/logs/hadoop-root-namenode-node01.out
  8. 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.
  9. node01: It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
  10. node01: starting datanode, logging to /usr/hadoop/hadoop-2.5.2/logs/hadoop-root-datanode-node01.out
  11. Starting secondary namenodes [node01]
  12. node01: starting secondarynamenode, logging to /usr/hadoop/hadoop-2.5.2/logs/hadoop-root-secondarynamenode-node01.out
  13. 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.
  14. node01: It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
  15. 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.
  16. It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
  17. 22/06/10 05:29:01 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  18. }
  1. jps # 角色即目录
  2. {
  3. 4829 DataNode
  4. 4974 SecondaryNameNode
  5. 4718 NameNode
  6. 5087 Jps
  7. }
  1. cd /var/sxt/hadoop/local/dfs/
  2. ll # 对于完全分布式的话:第一台只能看到name,第二台只能看到data;
  3. {
  4. total 12
  5. drwx------ 3 root root 4096 Jun 10 05:28 data #
  6. drwxr-xr-x 3 root root 4096 Jun 10 05:28 name # 格式化产生的
  7. drwxr-xr-x 3 root root 4096 Jun 10 05:28 namesecondary
  8. }

3.8 说明

  1. cd /var/sxt/hadoop/local/dfs/name/current/
  2. cat VERSION
  3. {
  4. #Fri Jun 10 05:18:49 PDT 2022
  5. namespaceID=1178112766
  6. clusterID=CID-3ba8cea9-4994-4ad6-aff6-b159d0f716d1 # 集群开始时候DttaNonde跟随namenode(就是两者的clusterID一样);格式化时候只会格式化namenode,datanode不会变化;如果重新格式化的话,datanode会找不到namenode,然后自杀,进程退出,找不到主人,自杀;
  7. cTime=0 # 如果发现启动后datanode不见了,第一反应就是这个clusterID不一样,datanode自杀了;
  8. storageType=NAME_NODE # datanode上面的VERSION文件什么时候创建的?在namenode格式化后,datanode第一次启动与namenode交互后产生的。namenode授权给他的。
  9. blockpoolID=BP-2116590704-192.168.9.11-1654863529163
  10. layoutVersion=-57
  11. }
  1. cd /var/sxt/hadoop/local/dfs/data/current/
  2. cat VERSION
  3. {
  4. #Fri Jun 10 05:28:54 PDT 2022
  5. storageID=DS-6f5b9506-8a9c-4daa-99b9-5acdb21cf00d
  6. clusterID=CID-3ba8cea9-4994-4ad6-aff6-b159d0f716d1 # 集群开始时候DttaNonde跟随namenode(就是两者的clusterID一样)
  7. cTime=0
  8. datanodeUuid=fa96bb92-0d4a-488c-87a9-649a1481f49d
  9. storageType=DATA_NODE
  10. layoutVersion=-55
  11. }
  1. http://node01:50070/ # 浏览器;9000是rpc间通信用的,不是web的,做心跳,传输数据;
  2. {
  3. Overview 'node01:9000' (active)
  4. Live Nodes 1 (Decommissioned: 0)
  5. Utilities -> 浏览文件系统 -> / # hadoop的根目录
  6. }
  1. hdfs # 查看后面可以接收什么参数
  2. hdfs dfs # 提示 hadoop fs == hdfs dfs
  3. hdfs dfs -mkdir -p /user/root # 创建用户目录,root;可以在:Utilities -> 浏览文件系统 -> 查看(/user/root 相当于Linux的home)
  4. cd /usr/hadoop/
  5. hdfs dfs -put ./hadoop-2.5.2.tar.gz /user/root # 上传文件: 同样在:Utilities -> 浏览文件系统 -> 查看
  6. # Permission Owner Group Size(实际大小) Replication Block Size(块大小) Name
  7. # 可以点击文件,看见文件被切成两个块

3.9 作业

  1. for i in `seq 100000`;do echo "hello world $i" >> test.txt;done
  2. ll -h ./
  3. hdfs dfs -D dfs.blocksize=1048576 -put ./test.txt /user/root # 1M
  4. /var/sxt/hadoop/local/dfs/data/current/BP-2116590704-192.168.9.11-1654863529163/current/finalized
  5. ll
  6. {
  7. -rw-r--r-- 1 root root 134217728 Jun 10 06:00 blk_1073741825 # 压缩包 数据
  8. -rw-r--r-- 1 root root 1048583 Jun 10 06:00 blk_1073741825_1001.meta # 压缩包 元数据
  9. -rw-r--r-- 1 root root 12979764 Jun 10 06:00 blk_1073741826 # 压缩包 数据
  10. -rw-r--r-- 1 root root 101415 Jun 10 06:00 blk_1073741826_1002.meta # 压缩包 元数据
  11. -rw-r--r-- 1 root root 1048576 Jun 10 06:15 blk_1073741827 # test文件 数据
  12. -rw-r--r-- 1 root root 8199 Jun 10 06:15 blk_1073741827_1003.meta # test文件 元数据
  13. -rw-r--r-- 1 root root 740319 Jun 10 06:15 blk_1073741828 # test文件 数据
  14. -rw-r--r-- 1 root root 5791 Jun 10 06:15 blk_1073741828_1004.meta # test文件 元数据
  15. }
  16. stop-dfs.sh # 关闭

hadoop集群搭建——单节点(伪分布式)的更多相关文章

  1. 吴裕雄--天生自然HADOOP操作实验学习笔记:单节点伪分布式安装

    实验目的 了解java的安装配置 学习配置对自己节点的免密码登陆 了解hdfs的配置和相关命令 了解yarn的配置 实验原理 1.Hadoop安装 Hadoop的安装对一个初学者来说是一个很头疼的事情 ...

  2. kafka系列一:单节点伪分布式集群搭建

    Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...

  3. Hadoop集群搭建(完全分布式版本) VMWARE虚拟机

    Hadoop集群搭建(完全分布式版本) VMWARE虚拟机 一.准备工作 三台虚拟机:master.node1.node2 时间同步 ntpdate ntp.aliyun.com 调整时区 cp /u ...

  4. 三节点Hadoop集群搭建

    1. 基础环境搭建 新建3个CentOS6.5操作系统的虚拟机,命名(可自定)为masternode.slavenode1和slavenode2.该过程参考上一篇博文CentOS6.5安装配置详解 2 ...

  5. 大数据初级笔记二:Hadoop入门之Hadoop集群搭建

    Hadoop集群搭建 把环境全部准备好,包括编程环境. JDK安装 版本要求: 强烈建议使用64位的JDK版本,这样的优势在于JVM的能够访问到的最大内存就不受限制,基于后期可能会学习到Spark技术 ...

  6. Hadoop 集群搭建和维护文档

    一.前言 -- 基础环境准备 节点名称 IP NN DN JNN ZKFC ZK RM NM Master Worker master1 192.168.8.106 * * * * * * maste ...

  7. 大数据学习——HADOOP集群搭建

    4.1 HADOOP集群搭建 4.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主 ...

  8. 环境搭建-Hadoop集群搭建

    环境搭建-Hadoop集群搭建 写在前面,前面我们快速搭建好了centos的集群环境,接下来,我们就来开始hadoop的集群的搭建工作 实验环境 Hadoop版本:CDH 5.7.0 这里,我想说一下 ...

  9. Hadoop 集群搭建

    Hadoop 集群搭建 2016-09-24 杜亦舒 目标 在3台服务器上搭建 Hadoop2.7.3 集群,然后测试验证,要能够向 HDFS 上传文件,并成功运行 mapreduce 示例程序 搭建 ...

随机推荐

  1. 如何写好一份晋升PPT(附PPT模板)

    又到了每年晋升述职的时间,在过去的5.6年里,我以评委身份参与了大量的晋升述职(主要是前端,也包括客户端和测试),也辅导了许多(100+)组内外的同学,指导他们书写和完善PPT.过程中我发现大家有许多 ...

  2. 联想Y7000安装 debian10 wifi 不好使解决方法

    联想Y7000安装 debian10 wifi 不好使解决方法 wifi硬件高通QCA9377 把联想驱动加入黑名单 文件路径 /etc/modprobe.d/blacklist.conf 添加内容 ...

  3. Vagrant详细教程

    一.安装virtualBox 进入 VirtualBox 的主页,即可进入下载页面. VirtualBox 是一个跨平台的虚拟化工具,支持多个操作系统,根据自己的情况选择对应的版本下载即可. 在安装完 ...

  4. HCNP Routing&Switching之端口隔离

    前文我们了解了组播路由协议稀疏模式中的RP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16154347.html:今天我们来聊一聊二层交换机中有关v ...

  5. 使用Proftpd支持FTP/SFTP权限管控

    简介 FTP 文件传输协议,FTP由FTP服务器(存储文件)和FTP客户端(通过FTP协议访问FTP服务器上的资源)组成 传输方式 主动模式(Port) 客户端与服务器端的TCP 21端口建立连接 - ...

  6. Django学习——路由层之路由匹配、无名分组、有名分组、反向解析

    路由层之路由匹配 """路由你可以看成就是出去ip和port之后的地址""" url()方法 1.第一个参数其实是一个正则表达式 2.一旦第 ...

  7. ChCore Lab2 内存管理 实验笔记

    本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第二篇.所有章节的笔记可在此处查看:chcore | 康宇PL's Blo ...

  8. Vert.X CompositeFuture 用法

    CompositeFuture 是一种特殊的 Future,它可以包装一个 Future 列表,从而让一组异步操作并行执行:然后协调这一组操作的结果,作为 CompositeFuture 的结果.本文 ...

  9. 老生常谈系列之Aop--Spring Aop源码解析(二)

    老生常谈系列之Aop--Spring Aop源码解析(二) 前言 上一篇文章老生常谈系列之Aop--Spring Aop源码解析(一)已经介绍完Spring Aop获取advice切面增强方法的逻辑, ...

  10. resultMap,日志,分页

    问题:属性名和字段名不一致 解决方法 起别名 select id, username, password as pwd from db4.user resultMap结果集映射 id username ...