hadoop在Linux下的简单配置

来源:千峰科技王从明老师

第一节:远程连接工具的使用

1.1)使用远程工具的原因

实际生产环境中,员工不会直接登陆服务器,而是通过远程连接工具,进行远程登陆。那么就需要知道服务器的IP地址,一个用户名和密码。

1.2)常用的远程工具

x-shell,scp 、finalshel、putty、MobaXterm

1.3)使用MobaXterm

1)安装(略)

2)连接虚拟机(前提是物理机能ping通虚拟机)

点击Session--->选择SSH---输入服务器IP--->指定用户名root---->ok---->输入密码(密码不可见)

第二节:免密登陆认证

2.1 使用免密登陆认证的原因

当我们频繁的在一台机器A上连接另外一台机器B时,不论是复制文件还是删除文件,或者是进行其他操作。那么都要使用机器B的用户名和密码。每次都需要输入密码,那么效率降低了。这个时候,如果可以不输入密码,还有一定的安全性,可以防止黑客在中间截取信息。那么就需要一种安全认证技术。

2.2 密码登陆认证的配置

1)准备工作

需求:机器A免密登陆机器B
如:ssh localhost/127.0.0.1

注意:如果使用ssh时,命令不存在,需要安装ssh的客户端软件
[root@manager04 ~]# yum -y install openssh-clients.x86_64

当机器A想免密登陆机器B时,需要在机器A上生成一对密钥,分别是一个私钥文件和公钥文件,还需要将机器A的公钥
复制到机器B的相关用户的~/.ssh/目录下,并且更名为authorized_keys,还要保证此文件的权限600,.ssh目录的权限是700.

生成密钥的命令
[root@master04 ~]# ssh-keygen -t rsa       一路回车
[root@master04 ~]# cd .ssh
[root@master04 ~]# cp id_rsa.pub authorized_keys

2)测试

[root@master04 ~]# ssh 机器B的IP地址     

案例:ssh   192.168.81.141
说明:正确格式:ssh   username@ip
     如果不写username@,连接的用户默认与当前机器的用户名相同

3)原理

[图片上传失败...(image-3835b9-1576065751546)]

第三节:Hadoop搭建的环境要求

3.1 环境需求

在搭建HDFS的完全分布式集群时,需要以下环境要求:

--1. 防火墙需要关闭
--2. 时间同步
--3. 免密登陆认证
--4. 域名映射
--5. jdk环境
--6. hadoop的环境变量

3.2 防火墙的关闭

[root@master04 ~]# service iptables status          #查看防火墙的状态
[root@master04 ~]# service iptables stop            #临时关闭防火墙
[root@master04 ~]# service iptables start           #临时开启防火墙

[root@master04 ~]# chkconfig iptables off       #关闭防火墙自动启动功能
[root@master04 ~]# chkconfig iptables on        #关闭防火墙自动启动功能
[root@master04 ~]# chkconfig iptables --list        #关闭防火墙自动启动功能

3.3 时间同步

有些软件在集群上使用要求机器之间的时间差不能超过一定范围,比如HDFS要求集群的时间差不能超过30分钟,hbase要求集群上的时间差不能超出30秒,所以时间需要同步。

可以临时同步一下网络上其他服务器的时间

[root@master04 ~]# ntpdate -u 时间服务器的ip或者域名

注意:如果命令不存在,安装ntpdate软件
[root@master04 ~]# yum -y install ntpdate.x86_64

可以同步微软的服务器
[root@master04 ~]# ntpdate -u time.windows.com

[root@master04 ~]# date    查看时间
[root@master04 ~]# date -s 'yyyy-MM-dd HH:mm:ss'

3.4 免密登陆认证

参考第二节内容

3.5 域名映射

1)说明

人类不习惯记忆数字的IP地址形式,更适合记忆一些有意义的见名知意的一些单词。因此在计算机领域中,有这样一种映射关系,即主机名与ip的映射,域名与ip的映射

举例:
www.baidu.com  169.128.12.234
www.baidu.com  169.128.12.222

master04    192.168.81.140

2)配置域名映射

[root@master04 ~]# vi /etc/hosts
..........省略.........
192.168.81.140  manager04
192.168.81.141  follower01
192.168.81.142  follower02
192.168.81.143  follower03
192.168.81.144  follower04
192.168.81.145  follower05
192.168.81.146  follower06
192.168.81.147  follower07
192.168.81.148  follower08

测试:是否能使用主机名,远程连接自己
[root@master04 ~]# ssh manager04

3.6 jdk环境搭建

1)准备工作

设计两个目录
/opt/software/  #用来存储软件包
/opt/apps/      #用来安装软件的

将jdk-8u162-linux-x64.tar.gz 和hadoop-2.7.6.tar.gz 上传到/opt/software里

2)解压jdk到/opt/apps/

[root@master04 software]# tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/apps/

3)更名操作

[root@master04 software]# cd ../apps/
[root@master04 apps]#  mv jdk1.8.0_162/ jdk

4)配置环境变量

4.1)说明

系统级别的文件:/etc/profile
用户级别的文件:~/.bash_profile         选择此文件进行配置
              ~/.bashrc

4.2)配置

[root@master04 apps]# vi ~/.bash_profile
........省略.........
# java environment
export JAVA_HOME=/opt/apps/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

4.3)使当前窗口生效(或者reboot)

[root@master04 apps]# source ~/.bash_profile

4.4)验证

[root@master04 apps]# java -version
[root@master04 apps]# javac

3.7 hadoop环境变量的配置

1)解压缩

[root@master04 software]# tar -zxvf hadoop-2.7.6.tar.gz -C /opt/apps/

2)更名

[root@master04 software]# cd ../apps/
[root@master04 apps]# mv hadoop-2.7.6/ hadoop

3)配置

[root@master04 apps]# vi ~/.bash_profile

........省略.........
# hadoop environment
export HADOOP_HOME=/opt/apps/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

4)使当前窗口生效

[root@manager04 apps]# source ~/.bash_profile

5)验证

[root@manager04 apps]# hadoop version
Hadoop 2.7.6
........省略.........

第四节:HDFS的完全分布式集群

4.1 搭建方式的说明:

--1. 独立模式
--2. 伪分布式模式
--3. 完全分布式模式


总结:
-1 独立模式和伪分布式模式,
    --相同点:都是在单节点上进行安装。
    --不同点:独立模式使用的本地文件系统即linux文件系统,没有守护进程
             伪分布式模式使用的分布式文件系统,即分布式思想
-2 伪分布式模式和完全分布式模式
    --相同点:都是使用了分布式思想,即使用分布式文件系统
             都是独立的守护进程,每个进程单独占用一个jvm.
             (namenode,datanode,secondarynamenode)
    --不同点:伪分布式使用单节点来维护整个分布式文件系统,
            而完全分布式使用多台机器(节点)来共同维护一个分布式文件系统
            伪分布式只有一个datanode
            完全分布式有N个datanode            

4.2 完全分布式集群的配置

1)守护进程布局

master04:       namenode    datanode    secondarynamenode   resourcemanager  nodemanager
worker1:        datanode    nodemanager
worker2:        datanode    nodemanager

2)配置文件的说明

需要修改:$HADOOP_HOME/etc/hadoop/目录下的一些文件
-- core-site.mxl
-- hdfs-site.xml
-- mapred-site.xml
-- yarn-site.xml
-- slaves
-- hadoop-env.sh
-- yarn-env.sh

4.3 配置步骤

1)配置core-site.xml

[root@master04 hadoop]# pwd
/opt/apps/hadoop/etc/hadoop
[root@master04 hadoop]# vi core-site.xml



  fs.defaultFSl
  hdfs://master04:8020




  hadoop.tmp.dir
  /opt/apps/hadoop/tmp

2)hdfs-site.xml

[root@master04 hadoop]# vi hdfs-site.xml



  dfs.namenode.name.dir
  /opt/apps/hadoop/tmp/dfs/name




  dfs.datanode.data.dir
  file://${hadoop.tmp.dir}/dfs/data




  dfs.replication
  3




  dfs.namenode.secondary.http-address
  master04:50090

3)mapred-site.xml

[root@master04 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@master04 hadoop]# vi mapred-site.xml



  mapreduce.framework.name
  yarn

4)yarn-site.xml

[root@master04 hadoop]# vi yarn-site.xml



    yarn.nodemanager.aux-services
    mapreduce_shuffle



    yarn.resourcemanager.hostname
    master04
 

5)slaves文件:配置所有datanode节点的主机名

[root@master04 hadoop]# vi slaves
master04
worker1
worker2

6)hadoop-env.sh

[root@master04 hadoop]# vi hadoop-env.sh
......省略........
找到下面这两行,设置jdk的路径 
# The java implementation to use.
export JAVA_HOME=/opt/apps/jdk
......省略........

7)yarn-env.sh

[root@master04 hadoop]# vi yarn-env.sh
......省略........
找到下面这两行,设置jdk的路径 
# some Java parameters
export JAVA_HOME=/opt/apps/jdk
......省略........

3.6 搭建另外两台机器:worker1 worker2

1)说明,使用完整克隆,克隆manager

优势:
-- 不用在重新配置所需要的环境(jdk,hadoop,防火墙,免密,域名映射)
-- 不用再重新配置core-site.xml等7个文件
-- 免密登陆认证:三台机器的私钥和公钥是同一套

2)克隆步骤

右键点机要克隆的机器--->管理-->克隆--->下一步-->虚拟机的当前状态-->创建完整克隆--命名--->完成
CentOS_6.5_64_slave1    192.168.81.131
CentOS_6.5_64_slave2    192.168.81.132

3)修改新克隆机器的主机名

#使用root用户修改主机名为slave1       另一台机器同样的操作

[root@manager ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave1

4)修改新克隆机器的IP地址

[root@manager ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改克隆机器的IPADDR、DEVICE、HWADDR
IPADDR=192.168.81.131        #另一台机器同样的操作
DEVICE=eth0                  #不变,修改70-persistent-net.rules的名字为eth0
HWADDR=                     # 参考70-persistent-net.rules里新生成的HWADDR

[root@manager ~]# vi /etc/udev/rules.d/70-persistent-net.rules
删除或注释掉旧的MAC地址,别忘记eth1改为eth0

[root@manager ~]# service network restart
[root@manager ~]# reboot

5)重启后,验证免密登陆认证是否有效

目的:去掉第一次的询问

3.7 格式化集群

1)目的

目的1:使分布式文件系统可用
目的2:生成clusterID(分布式文件系统的唯一标识符)
目的3:生成hadoop.tmp.dir这个属性配置的路径,以及生成namenode守护进程所管理数据的存储路径
目的4:生成namenode守护进程所管理的元数据的存储文件fsimage

2)格式化的命令

注意:一定要选择namenode所在的节点上进行格式化

[root@manager ~]# hdfs namenode -format

出现 Storage directory /opt/apps/hadoop/tmp/dfs/name has been successfully formatted.
表示成功

3.8 开启集群

1)开启集群的命令

start-dfs.sh    # 开启hdfs的相关守护进程的,namenode,datanode,secondaryname
start-yarn.sh   # 开启yarn的相关守护进程的, resoucemanager,nodemanager
start-all.sh    # 开启hdfs和yarn的守护进程
hadoop-daemon.sh    #y用于单独开启或关闭守护进程的

hadoop-daemon.sh [start|stop] [namenode|datanode|secondarynamenode]

stop-dfs.sh
stop-yarn.sh
stop-all.sh

2)使用jps查看节点上的守护进程

[root@manager ~]# jps

3)使用http协议查看分布式文件系统

http://192.168.81.130:50070
  1. 第一次开启集群时
--1:生成了logs目录
--2:在每一个datanode节点生成了${hadoop.tmp.dir}/dfs/data 目录,用于存储文件块。
--3:在${hadoop.tmp.dir}/dfs/name/current目录下生成了edit日志文件

5)暴力解决节点不正常的方式

--1. 删除三台机器上的tmp目录和logs目录
--2. 在manager机器上重新格式化 

第四节:HDFS的常用shell指令

3.1 常用指令:

hdfs dfs -mkdir  /input
hdfs dfs -put ./word.txt /input/
hdfs dfs -cat /input/word.txt
........

第五节:windows平台配置hadoop环境

4.1 windows环境配置

4.1.1 解压hadoop-2.7.6.tar.gz到本地磁盘,如下图:

D02-4-1.1.jpg

4.1.2 配置环境变量

- HADOOP_HOME:  D:\apps\hadoop-2.7.6
- PATH: %HADOOP_HOME%\bin 和 %HADOOP_HOME%\sbin

4.1.3 由于Hadoop是在32位系统上编译的,并且对windows支持不好,所以需要把64的编译本地库文件(下图的两个文件),放入bin目录中。

D02-4-1.2.jpg

10.1.4 验证环境变量是否生效:

C:\Users\Michael>hadoop version

10.1.5 如果报错:Error: JAVA_HOME is incorrectly set

那就找到etc/hadoop/下的hadoop-env.cmd,修改JAVA_HOME的内容如下格式即可
set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_172

4.2 HDFS的资源jar包提取

为了方便开发,我们可以将相关的jar提取出来。


D02-4-1.3.jpg
1. 在hadoop-2.7.6目录下创建以上目录(参考图片)
2. 进入share目录中的doc子目录,搜索default.xml。将四个默认的xml文件copy到_default目录中,方便以后查看
3. 进入share目录中,搜索*.jar。将搜索到的所有jar文件copy到_jars目录下,重复的跳过。大约208个jar包左右。
4. 在_jars目录中,搜索test,将搜索到的jar包剪切到_tests目录下。这是一些关于程序测试的jar包,提取出来。大约36个左右
5. 在_jars目录中,搜索source,将搜索到的jar包剪切到_sources目录下。这些jar包是hadoop的源码包。想看源码的可以使用,大约28个
6. 此时,_jars目录中剩下的都是hadoop的相关api的jar包,大约144个。





你可能感兴趣的:(hadoop在Linux下的简单配置)