Hadoop HDFS搭建日志

版权声明:本文为博主原创文章,转载请声明原创网址。 https://blog.csdn.net/lagoon_lala/article/details/85048525

目录

HDFS集群搭建

一、配置hosts文件

二、建立hadoop运行帐号

三、配置ssh免密码连入

更新known_hosts updated

四、下载并解压hadoop安装包

Hadoop 启动/停止集群和节点的命令


操作系统:Ubuntu16.04 Server

HDFS集群搭建

阅读:https://blog.csdn.net/boori/article/details/81021191

主要参考:https://www.cnblogs.com/caiyisen/p/7373512.html

VMware自带的克隆,能克隆出三台一模一样的虚拟机

当前环境:

Ubuntu16.04

java version "1.8.0_171"

先总的看一下所有的步骤:

一、配置hosts文件

二、建立hadoop运行帐号

三、配置ssh免密码连入

四、下载并解压hadoop安装包

五、配置 /etc/hadoop目录下的几个文件及 /etc/profile

六、格式化namenode并启动集群 

一、配置hosts文件

现对虚拟机主机名进行修改,来进行区分一个主节点和两个从节点。

 

修改只读文件权限:sudo chmod a+w test.c

接下来,分别查看三台虚拟机的ip地址

inet addr就是这台虚拟机的ip地址。

10.2.68.104

10.2.68.101

10.2.68.100

主机1改成了Hadoop1Server_master

将三台虚拟机的ip地址和主机名加在里面,其它的不用动它。

三台虚拟机都要修改hosts文件。简单的说配置hosts后三台虚拟机就可以进行通信了,可以互相ping一下试试,是可以ping通的。

sudo vim /etc/hosts

127.0.0.1       localhost

10.2.68.104 Hadoop1Server

10.2.68.101 Hadoop2Server

10.2.68.100 Hadoop3Server

10.2.68.99 Hadoop4Server

10.2.68.98 Hadoop5Server

 

# The following lines are desirable for IPv6 capable hosts

::1     localhost ip6-localhost ip6-loopback

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

 

二、建立hadoop运行帐号

就是建立一个group组,然后在三台虚拟机上重新建立新的用户,将这三个用户都加入到这个group中。

以下操作三台虚拟机都要进行相同操作

 首先添加一个叫hadoop用户组进来

sudo groupadd hadoop

cat /etc/group

添加名叫hduser的用户,并添加到hadoop组中

sudo useradd -s /bin/bash -d /home/hduser -m hduser -g hadoop

赋予权限

sudo adduser hduser sudo

更改其他用户密码,只要输入passwd username

sudo passwd hduser

密码:123456

切换到刚刚新建的用户进行操作

su hduser

三、配置ssh免密码连入

开始配置ssh之前,先确保三台机器都装了ssh。

输入以下命令查看安装的ssh。

dpkg --list|grep ssh

机器显示如下则正常:

ii  openssh-client                     1:7.2p2-4ubuntu2.6                         amd64        secure shell (SSH) client, for secure access to remote machines

ii  openssh-server                     1:7.2p2-4ubuntu2.6                         amd64        secure shell (SSH) server, for secure access from remote machines

ii  openssh-sftp-server                1:7.2p2-4ubuntu2.6                         amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

ii  ssh-import-id                      5.5-0ubuntu1                               all          securely retrieve an SSH public key and install it locally

如果缺少了opensh-server,需要进行安装:sudo apt-get install openssh-server

安装完毕之后开始配置ssh

接下来的这第三个步骤的操作请注意是在哪台主机上进行,不是在三台上同时进行

1)下面的操作在master机上操作

首先在master机上输入以下命令,生成master机的一对公钥和私钥:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

警告:公钥私钥已存在

/home/user/.ssh/id_rsa already exists.

Overwrite (y/n)? nn

以下命令进入认证目录可以看到,  id_rsa id_rsa.pub这两个文件,就是我们刚刚生成的公钥和私钥。

Cd .ssh

Ls

然后,下面的命令将公钥加入到已认证的key中:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

再次进入生成目录,可以看到多出authorized_keys这个文件:

cd .ssh

ls

显示:

authorized_keys  id_rsa  id_rsa.pub  known_hosts

然后输入ssh localhost 登录本机命令,第一次提示输入密码,输入exit退出,再次输入ssh localhost不用输入密码就可以登录本机成功,则本机ssh免密码登录已经成功。

Exit退出登录

配置node1node2节点的ssh免密码登录,目的是让master主机可以不用密码登录到node1node2主机。

2)这一步分别在node1node2主机上操作

master主机上的is_dsa.pub复制到node1主机上,命名为node1_dsa.pubnode2主机进行同样的操作。

XShellWindows互传文件:https://blog.csdn.net/u010710198/article/details/21187809

Linuxscp命令用于Linux之间复制文件和目录:http://www.runoob.com/linux/linux-comm-scp.html

scp [可选参数] file_source file_target

从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例

scp [email protected]:/home/root/others/music /home/space/music/1.mp3

目前ssh Hadoop3Server显示:

Warning: the RSA host key for 'hadoop3server' differs from the key for the IP address '10.2.68.100'

Offending key for IP in /home/user/.ssh/known_hosts:3

Matching host key in /home/user/.ssh/known_hosts:11

root连:

The authenticity of host 'hadoop3server (10.2.68.100)' can't be established.

RSA key fingerprint is SHA256:7betrMgjuO3Owd03sMKOpovJt7xMXD7VIn3BQpWewKo.

Warning: Permanently added 'hadoop3server,10.2.68.100' (RSA) to the list of known hosts

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

远程主机:后无空格

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818194440943-750328983.png

user@Hadoop3Server:~$ scp user@Hadoop1Server:~/.ssh/id_rsa.pub ~/.ssh/Hadoop3Server_rsa.pub

显示:

id_rsa.pub                                          100%  400     0.4KB/s   00:00

将从master得到的密钥加入到认证,node2主机进行同样的操作。

把id_rsa.pub追加到授权的key里面去。

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170817225001553-1348610209.png

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/Hadoop3Server_rsa.pub >> ~/.ssh/authorized_keys

然后开始验证是不是已经可以进行ssh免密码登录。

3)在master机上进行验证

同样第一次需要密码,之后exit退出,再ssh node1就不需要密码登录成功,说明ssh免密码登录配置成功!

 https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170817225220256-1620186516.png

如果失败了,可能是前面的认证没有认证好,可以将.ssh目录下的密钥都删了重新生成和配置一遍。或者检查下hosts文件ip地址写的对不对。

此处免密登录为ssh Hadoop2Server等

更新known_hosts updated

报错:

RSA host key for hadoop3server has changed and you have requested strict checking.

Host key verification failed.

解决:ssh-keygen -R hadoop3server

https://blog.csdn.net/github_38236333/article/details/78335903

之后显示

The authenticity of host 'hadoop3server (10.2.68.100)' can't be established.

ECDSA key fingerprint is SHA256:lEys3rUjbFGXlkOctNUiJdNTi/TRb/9O6YMxqU5PcIo.

Are you sure you want to continue connecting (yes/no)? yes

成功登录

 

四、下载并解压hadoop安装包

版本:Hadoop2.6.0  (下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/

建议初学者选择2.6.0或者2.7.0版本就可以了,而且如果后面要配置Eclipse开发环境的话,这两个版本的插件很容易找到,不用自己去编译。

话不多说,将hadoop压缩包,解压到一个文件夹里面,例子这里解压到了home文件夹,并修改文件夹名为hadoop2.6。所在的目录就是/home/hduser/hadoop2.6

 三台主机都要解压到相应位置

本地为Hadoop 2.7.6

五、配置 /etc/hadoop目录下的几个文件及 /etc/profile

主要有这5个文件需要修改:

~/etc/hadoop/hadoop-env.sh

~/etc/hadoop/core-site.xml

~/etc/hadoop/hdfs-site.xml

~/etc/hadoop/mapred-site.xml

~/etc/hadoop/slaves

/etc/profile

三台机都要进行这些操作,可以先在一台主机上修改,修改完了复制到其它主机就可以了。

 首先是hadoop-env.sh ,添加java安装的地址,保存退出即可。

问题:~/etc/hadoop/hadoop-env.sh不存在,是新建文件

在home下查看hadoop文件夹,找到自己的路径

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818185230943-1059228784.png

然后core-site.cml

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818185346928-551420188.png

解释下:第一个fs.default.name设置master机为namenode   第二个hadoop.tmp.dir配置Hadoop的一个临时目录,用来存放每次运行的作业jpb的信息。

 

接下来hdfs-site.xml的修改:

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818185837521-1613808053.png

解释下:dfs.name.dirnamenode存储永久性的元数据的目录列表。这个目录会创建在master机上。dfs.data.dirdatanode存放数据块的目录列表,这个目录在node1node2机都会创建。 dfs.replication 设置文件副本数,这里两个datanode,所以设置副本数为2

接下来mapred-site.xml的修改:

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818190442162-993203399.png

 

解释下:这里设置的是运行jobtracker的服务器主机名和端口,也就是作业将在master主机的9001端口执行。

 接下来修改slaves文件

教程:~/etc/hadoop/slaves

本地:~/hadoop/etc/hadoop/slaves

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818190652225-1627668972.png

这里将两台从主机的主机名node1node2加进去就可以了。

原为:

Hadoop3Server

Hadoop4Server

Hadoop5Server

改为:

Hadoop2Server

Hadoop3Server

 

 最后修改profile文件 ,如下进入profile:

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818191130896-1072316764.png

将这几个路径添加到末尾:

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818191116178-1439438859.png

修改完让它生效:

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818191958209-1357205797.png

 

 检查下是否可以看到hadoop版本信息

显示出了版本信息,如果没有显示出来,回过去检查 profile路径是否填写错误。

显示版本信息如下

user@Hadoop1Server:~$ hadoop version

Hadoop 2.7.6

Subversion https://[email protected]/repos/asf/hadoop.git -r 085099c66cf28be31604560c376fa282e69282b8

Compiled by kshvachk on 2018-04-18T01:33Z

Compiled with protoc 2.5.0

From source with checksum 71e2695531cb3360ab74598755d036

This command was run using /home/user/hadoop/share/hadoop/common/hadoop-common-2.7.6.jar

六、格式化namenode并启动集群 

接下来需要格式化namenode,注意只需要在 master主机上进行格式化。格式化命令如下:

 https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818192101928-188344894.png

看到successful表示格式化成功。

接下来启动集群:

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818192202490-61857544.png

启动完毕,检查下启动情况: master主机看到四个开启的进程,node1node2看到三个开启的进程表示启动成功。

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818192314928-905788711.png

https://images2017.cnblogs.com/blog/1136325/201708/1136325-20170818193004584-919947754.png

user@Hadoop1Server:~$ start-all.sh

报错:脚本已经弃用

This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh

第二次尝试

start-dfs.sh

报错:刚刚已经启动集群还未停止、占用进程

Hadoop 启动/停止集群和节点的命令

启动/停止Hadoop集群:start-all.sh    stop-all.sh

user@Hadoop1Server:~$ stop-all.sh

This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh

修复:

https://blog.csdn.net/violet_echo_0908/article/details/53486317

此处如上警告提示为/home/user/.ssh/known_hosts

看不懂,且无法通过vim修改

 

Add correct host key in /home/user/.ssh/known_hosts

未尝试重新复制公钥:

~/.ssh/is_dsa.pub ~/.ssh/Hadoop3Server_dsa.pub

 

清除旧的公钥信息

ssh-keygen -R 10.2.68.104

显示:

/home/user/.ssh/known_hosts updated.

Original contents retained as /home/user/.ssh/known_hosts.old

 

ssh免验证登录

https://blog.csdn.net/qq_38570571/article/details/79268426

 

ssh-keygen -f "/home/user/.ssh/known_hosts" -R hadoop3server

成功启动显示

user@Hadoop1Server:~$ start-dfs.sh

Starting namenodes on [Hadoop1Server]

Hadoop1Server: starting namenode, logging to /home/user/hadoop/logs/hadoop-user-namenode-Hadoop1Server.out

Hadoop3Server: starting datanode, logging to /home/user/hadoop/logs/hadoop-user-datanode-Hadoop3Server.out

Hadoop5Server: starting datanode, logging to /home/user/hadoop/logs/hadoop-user-datanode-Hadoop5Server.out

Hadoop4Server: starting datanode, logging to /home/user/hadoop/logs/hadoop-user-datanode-Hadoop4Server.out

Starting secondary namenodes [Hadoop2Server]

Hadoop2Server: starting secondarynamenode, logging to /home/user/hadoop/logs/hadoop-user-secondarynamenode-Hadoop2Server.out

 

猜你喜欢

转载自blog.csdn.net/lagoon_lala/article/details/85048525