前情提要。我们搭建了单节点也就是本地hadoop集群。我直接以此为基础 扩展到伪分布式集群
目录
一、hadoop伪分布式
操作系统
软件要求
三、配置详情
1.安装虚拟机和配置网络
2. 上传jdk和hadoop
安装 VMware tools
设置共享文件夹
3. 安装jdk和hadoop
解压jdk和hadoop
创建软链接
4. 配置环境变量
配置hadoop配置文件
1.hadoop-env.sh
2.croe-site.xml
3.hdfs-site.xml
配置ssh无密登录
5.初始化以及启动守护线程
6.集群展示和小案例
伪分布式集群(pseudo distributed cluster)是指在一台主机上模拟多个主机;hadoop的守护程序在本地计算机(虚拟机)上运行,模拟集群环境,并且是相互独立的Java进程。
在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由ResourceManager服务来管理的独立进程;与单节点模式相比,多了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互;类似于完全分布式模式下的集群。因此这种模式常用来开发测试Hadoop程序的执行是否正确。
实际上单节点是不需要配置网络的。因为要从w10上将jdk和hadoop安装包上传至虚拟机。并且我这台机器需要继续配置伪分布以及完全分布。所以我需要配置网络环境。配置网络其实很简单。不需要的朋友也可以试着配置一下。linux还是很有意思的
我的虚拟机是由一个空白的安装了linux6.8桌面版复制而来。因此 我需要修改虚拟机的mac地址。如果你的虚拟机是创建而来,那么可以跳过修改mac地址的步骤。网络使用nat模式。
- sudo vim /etc/udev/rules.d/70-persistent-net.rules ----查看网卡信息以及记忆mac地址
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100f (e1000)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:90:ab:e6", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
----------将此处配置注释或删除
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:b2:e7:66", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
----------记住网卡mac地址 即00:0c:29:b2:e7:66 并将网卡名改为 eth0
2.sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 -----修改网卡配置文件
DEVICE=eth0
HWADDR=00:0C:29:B2:E7:66 ------将mac地址修改为刚才的mac地址
TYPE=Ethernet
UUID=c74cd800-bd98-4b84-9b67-821f3f8c14a1
ONBOOT=yes -------将no改为yes 设置开机自动读取网络配置
NM_CONTROLLED=yes
BOOTPROTO=static -------将dhcp改为static 设置为nat模式
IPADDR=192.168.61.70 -------添加ipaddr ip为vm8网卡同网段 查看方式vmware 编辑-虚拟网络编辑
器-vm8网卡-nat设置。 或者直接在window下ipconfig 查看vm8的ip
NETMASK=255.255.255.0 ------- 添加netmask 子网掩码 默认为255.255.255.0
GATEWAY=192.168.61.2 -------添加gateway 默认网关 值为ip最后一位改为2
DNS1=192.168.61.2 -------添加 dns1 默认值何网关相同
3.修改主机名 和域名映射(因为我之后要搭建一个三个节点的完全分布集群 所以我的映射里面添加了三个从节点的ip)
sudo vim /etc/sysconfig/network -------修改主机名
NETWORKING=yes
HOSTNAME=Ms2 --------------将此处改为主机名
sudo vim /etc/hosts ---------修改主机映射
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.61.70 Ms2 --------------ip 主机名 可以忽略下面三条
192.168.61.71 sv1
192.168.61.72 sv2
192.168.61.72 sv3
注 以上配置生效最好重启
虚拟机->安装 VMware tools工具->解压缩压缩包到桌面->开启终端->切换root用户->执行可执行文件
->一路回车
点击虚拟主机->设置->选项->共享文件夹-->启动-->选择window系统上要共享的文件夹 (设置共享文件夹时需要重启)
首先验证网络配置 即
[ms@Ms2 桌面]$ ping baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144: icmp_seq=1 ttl=128 time=26.2 ms
64 bytes from 123.125.114.144: icmp_seq=2 ttl=128 time=25.7 ms
64 bytes from 123.125.114.144: icmp_seq=3 ttl=128 time=26.7 ms
64 bytes from 123.125.114.144: icmp_seq=4 ttl=128 time=25.8 ms
如果有数据传输 即成功
- mkdir ~/apps -------在用户主目录下创建apps目录
- cp /mnt/hgfs/1707/jdk-8u172-linux-x64.tar.gz ~/apps/ --------将共享文件夹中的jdk复制到 apps
- cp /mnt/hgfs/1707/hadoop-2.7.3.tar.gz ~/apps/ --------将共享文件夹中的hadoop复制到 apps
- tar -zvxf ~/apps/jdk-8u172-linux-x64.tar.gz ---------解压jdk
- tar -zvxf ~/apps/hadoop-2.7.3.tar.gz ---------解压hadoop
创建软链接 是为了更换软件时不需要修改环境变量
- [ms@Ms2 apps]$ ln -s ~/apps/hadoop-2.7.3 hadoop -------创建hadoop的链接
- [ms@Ms2 apps]$ ln -s ~/apps/jdk1.8.0_172 jdk -------创建jdk的软链接
- [ms@Ms2 apps]$ vim ~/.bash_profile -------打开环境配置文件
specific environment and startup programs
PATH=$PATH:$HOME/bin
JAVA_HOME=/home/ms/apps/jdk -------jdk主目录
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin -------配置执行文件指向jdk
HADOOP_HOME=/home/ms/apps/hadoop -------hadoop主目录
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin -------------配置执行文件指向hadoop
export PATH JAVA_HOME HADOOP_HOME -------设置自动加载
source ~/.bash_profile --------------读取配置文件
java ----------------测试jdk
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 "server" VM
默认 VM 是 server.-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 : 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>
设置系统属性
-verbose:[class|gc|jni]
启用详细输出
-version 输出产品版本并退出
-version:<值>
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X 输出非标准选项的帮助
-ea[:...|: ]
-enableassertions[:...|: ]
按指定的粒度启用断言
-da[:...|: ]
-disableassertions[:...|: ]
禁用具有指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:[=<选项>]
加载本机代理库, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:[=<选项>]
按完整路径名加载本机代理库
-javaagent:[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:
使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
hadoop ------------------测试hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
CLASSNAME run the class named CLASSNAME
or
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jarrun a jar file
note: please use "yarn jar" to launch
YARN applications, not this command.
checknative [-a|-h] check native hadoop and compression libraries availability
distcpcopy file or directories recursively
archive -archiveName NAME -p* create a hadoop archive
classpath prints the class path needed to get the
credential interact with credential providers
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
trace view and modify Hadoop tracing settingsMost commands print help when invoked w/o parameters
- [ms@Ms2 ~]$ vim ~/apps/hadoop/etc/hadoop/hadoop-env.sh
- export JAVA_HOME=/home/ms/apps/jdk ----------将此处修改为jdk路径
- vim ~/apps/hadoop/etc/hadoop/core-site.xml
-----------------添加以下属性
fs.defaultFS -----------------指定文件系统名称 和post ,host
hdfs://localhost:9000
- vim ~/apps/hadoop/etc/hadoop/hdfs-site.xml
dfs.replication -------------------指定文件副本数
1
- ssh-keygen -t rsa ------------------一直回车
- cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys --------------------将公钥发出
- chmod 600 ~/.ssh/authorized_keys ---------------修改权限为600
- ssh localhost ----测试ssh无密登录结果
- Last login: Fri Mar 29 02:34:28 2019 from localhost
初始化namenode进程(建议重启后)
- [ms@Ms2 桌面]$ hdfs namenode -format
启动守护线程
- [ms@Ms2 桌面]$ start-dfs.sh
- [ms@Ms2 tmp]$ jps
9974 Jps
9560 NameNode
9864 SecondaryNameNode
9661 DataNode
打开火狐浏览器 网址localhost:50070 可以看到有一个数据节点
小案例
创建一个文件夹
ok 搭建完成