此文章并不是单纯的搭建单节点 想要只搭建单节点只需要上传解压jdk 和hadoop 并修改环境变量 和配置env.sh。多出的东西是为搭建伪分布和完全分布用
目录
一、hadoop单节点
二、准备工作
操作系统
软件要求
三、配置详情
1.安装虚拟机和配置网络
2. 上传jdk和hadoop
安装 VMware tools
设置共享文件夹
3. 安装jdk和hadoop
解压jdk和hadoop
创建软链接
4. 配置环境变量
配置hadoop配置文件
5.小案例
小知识点
hadoop本地节点(Standalone/local)即安装在单节点(一台主机)的本地模式,也叫独立模式。所有程序都在单个JVM上执行。使用本地文件系统,而不是分布式文件系统。无需运行任何守护进程,hadoop不会启动NameNode、DataNode等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
实际上单节点是不需要配置网络的。因为要从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路径
- mkdir ~/apps/input ---------创建input目录
- cp ~/apps/hadoop/etc/hadoop/*.xml ~/apps/input/ ----------将一些文件复制到input下
- [ms@Ms2 ~]$ hadoop jar ~/apps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep ~/apps/input ~/apps/output 'dfs[a-z.]+' ----------执行jar包 将符合正则表达式的文件导入新创建的output下
- [ms@Ms2 ~]$ cat ~/apps/output/* ----------查看output
- 1 dfsadmin 搭建成功
sudo命令的使用 sudo命令的作用是使普通用户暂时在本条命令上拥有root用户权限 用法 sudo [命令] ... 防止使用root用户后未换回普通用户导致系统出问题
使用条件 需要修改/etc/sudoers 但是此文件对root用户是只读文件 但是root用户拥有所有文件的所有权限 我们可以将其修改为可修改文件 详细操作如下
- chmod 600 /etc/sudoers -----修改权限为可读可写
- vim /etc/sudoers -----打开此文件
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
#
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
ms ALL=(ALL) ALL ------在此处添加 用户名 ALL=(ALL) ALL
A## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS- : x ------退出vim 编辑器
- chmod 400 /etc/sudoers ------将权限改回只读
- 完成 之后可以使用sudo,命令啦