前提:需要电脑安装VM,且VM上安装一个Linux系统
注意:本人是在学习完尚学堂视频后,结合自己的理解,在这里做的总结。学习的视频是:大数据。
为了区分是在哪一台机器做的操作,eg:- - - Linux 表示在Linux上做的操作。
(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.8NETMASK=255.255.255.0GATEWAY=192.168.9.2DNS1=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.comLinux ping 主机: ping 192.168.9.128主机pingLinux:ping 192.168.9.2
- - - Windows:
# VMnet8IP地址:192.168.9.128子网掩码:255.225.255.0DNS:和网关一样或者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 node01192.168.9.12 node02192.168.9.13 node03192.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:65rm -f 70-persistent-net.rules # 为了克隆
(6) poweroff(克隆前别启动)
小扳手 -> 拍摄快照 -> basicbasic -> 克隆 -> 现有快照 -> 创建链接克隆(克隆之前Mac地址是一样的,但是启动之后就不一样了)
之后这个作为样板机,克隆出4台机器为:node01、node02、node03、node04
- - - Linux - node01:
vi /etc/sysconfig/network-scripts/ifcfg-eth0{ IPADDR=192.168.9.11}vi /etc/sysconfig/network # 改完重启后才会有效{NETWORKING=yesHOSTNAME=node01}vi /etc/hosts poweroff
- - - Linux - node02:
vi /etc/sysconfig/network-scripts/ifcfg-eth0{ IPADDR=192.168.9.12}vi /etc/sysconfig/network {NETWORKING=yesHOSTNAME=node02}vi /etc/hostspoweroff
node03、node04的地址是13、14,HOSTNAME改为对应的;
- - - Windows:修改hosts文件:
C:\Windows\System32\drivers\etc{192.168.9.11 node01192.168.9.12 node02192.168.9.13 node03192.168.9.14 node04}
参考网址:
# -> https://hadoop.apache.org/docs/r2.6.5/
# -> https://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/SingleCluster.html
cat /etc/hostshostnamecat /etc/sysconfig/networkssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa # 创建密钥公钥文件(dsa类型) id_dsa id_dsa.pubcat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys # 读取家目录的公钥文件然后重定向追加到到authorized_keys(将共钥放到访问方的认证文件里)(不要多次执行,重复执行了把authorized_keys删除一次)cat authorized_keys id_dsa.pub # 检查是否一样,公钥和私钥ssh root@localhost # 登录自己exitssh root@node01
参考网址:
# 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/javamv /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/profilejava -versionwhereis java jps
准备: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.gzcd /usr/hadoop/hadoop-2.5.2/ # sbin binvi /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/profilehadoop # hdfs start # Tab
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/ }
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>}
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 2022namespaceID=1178112766clusterID=CID-3ba8cea9-4994-4ad6-aff6-b159d0f716d1cTime=0storageType=NAME_NODEblockpoolID=BP-2116590704-192.168.9.11-1654863529163 # 连接池layoutVersion=-57 # 在namenode这边有这些数据了}
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 applicableStarting namenodes on [node01]node01: starting namenode, logging to /usr/hadoop/hadoop-2.5.2/logs/hadoop-root-namenode-node01.outnode01: 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.outStarting secondary namenodes [node01]node01: starting secondarynamenode, logging to /usr/hadoop/hadoop-2.5.2/logs/hadoop-root-secondarynamenode-node01.outnode01: 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 DataNode4974 SecondaryNameNode4718 NameNode5087 Jps}
cd /var/sxt/hadoop/local/dfs/ll # 对于完全分布式的话:第一台只能看到name,第二台只能看到data;{total 12drwx------ 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}
cd /var/sxt/hadoop/local/dfs/name/current/cat VERSION{#Fri Jun 10 05:18:49 PDT 2022namespaceID=1178112766clusterID=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-1654863529163layoutVersion=-57}
cd /var/sxt/hadoop/local/dfs/data/current/cat VERSION {#Fri Jun 10 05:28:54 PDT 2022storageID=DS-6f5b9506-8a9c-4daa-99b9-5acdb21cf00dclusterID=CID-3ba8cea9-4994-4ad6-aff6-b159d0f716d1 # 集群开始时候DttaNonde跟随namenode(就是两者的clusterID一样)cTime=0datanodeUuid=fa96bb92-0d4a-488c-87a9-649a1481f49dstorageType=DATA_NODElayoutVersion=-55}
http://node01:50070/ # 浏览器;9000是rpc间通信用的,不是web的,做心跳,传输数据;{Overview 'node01:9000' (active)Live Nodes 1 (Decommissioned: 0)Utilities -> 浏览文件系统 -> / # hadoop的根目录}
hdfs # 查看后面可以接收什么参数hdfs dfs # 提示 hadoop fs == hdfs dfshdfs 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# 可以点击文件,看见文件被切成两个块
for i in `seq 100000`;do echo "hello world $i" >> test.txt;donell -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/finalizedll {-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 # 关闭