Hadoop HDFS搭建日志

目录

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退出登录

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

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

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

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

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

scp [可选参数] file_source file_target

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

scp root@www.runoob.com:/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://img-blog.csdnimg.cn/20181228221700571

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://img-blog.csdnimg.cn/20181228221700623

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

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

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

3)在master机上进行验证

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

https://img-blog.csdnimg.cn/20181228221700665

如果失败了,可能是前面的认证没有认证好,可以将.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://img-blog.csdnimg.cn/20181228221700707

然后core-site.cml

https://img-blog.csdnimg.cn/20181228221700768

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

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

https://img-blog.csdnimg.cn/20181228221700811

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

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

https://img-blog.csdnimg.cn/20181228221700853

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

接下来修改slaves文件

教程:~/etc/hadoop/slaves

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

https://img-blog.csdnimg.cn/20181228221700901

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

原为:

Hadoop3Server

Hadoop4Server

Hadoop5Server

改为:

Hadoop2Server

Hadoop3Server

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

https://img-blog.csdnimg.cn/2018122822170125

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

https://img-blog.csdnimg.cn/2018122822170172

修改完让它生效:

https://img-blog.csdnimg.cn/20181228221701126

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

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

显示版本信息如下

user@Hadoop1Server:~$ hadoop version

Hadoop 2.7.6

Subversion https://shv@git-wip-us.apache.org/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://img-blog.csdnimg.cn/20181228221701173

看到successful表示格式化成功。

接下来启动集群:

https://img-blog.csdnimg.cn/20181228221701214

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

https://img-blog.csdnimg.cn/20181228221701266

https://img-blog.csdnimg.cn/20181228221701318

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.shstop-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

查看HDFS路径(hdfs.path):

https://www.cnblogs.com/gulang-jx/p/8568439.html

显示:

user@Hadoop1Server:~$ hadoop dfs -ls /

DEPRECATED: Use of this script to execute hdfs command is deprecated.

Instead use the hdfs command for it.

Found 3 items

drwxr-xr-x - user supergroup 0 2018-05-10 11:22 /benchmarks

drwx------ - user supergroup 0 2018-05-10 10:43 /tmp

drwxr-xr-x - user supergroup 0 2018-05-10 10:43 /user

在浏览器查看:

namenode节点服务器的ip或域名+端口(http://10.2.68.104:9000/

显示:

It looks like you are making an HTTP request to a Hadoop IPC port. This is not the correct port for the web interface on this daemon.

https://blog.csdn.net/znb769525443/article/details/49765201

管理界面:http://localhost:8088

NameNode界面:http://localhost:50070

HDFS NameNode界面:http://localhost:8042

输入http://10.2.68.104:50070能看到

显示

NameNode Journal Status

Current transaction ID: 5576

Journal Manager |State

FileJournalManager(root=/home/user/hadoop/tmp/dfs/name)| EditLogFileOutputStream(/home/user/hadoop/tmp/dfs/name/current/edits_inprogress_0000000000000005576)

NameNode Storage

Storage Directory |Type State

/home/user/hadoop/tmp/dfs/name | IMAGE_AND_EDITS Active

结点信息:

查看文件:

三个目录:benchmarks/ tmp/ user

HDFS上创建目录

查询命令:

hadoop dfs -ls /

显示:

user@Hadoop1Server:~$ hadoop dfs -ls /

DEPRECATED: Use of this script to execute hdfs command is deprecated.

Instead use the hdfs command for it. //hadoop 命令换成了hdfs命令

Found 3 items

drwxr-xr-x - user supergroup 0 2018-05-10 11:22 /benchmarks

drwx------ - user supergroup 0 2018-05-10 10:43 /tmp

drwxr-xr-x - user supergroup 0 2018-05-10 10:43 /user

替换hdfs正常显示:

hdfs dfs -ls /

创建目录:

${HADOOP_HOME}/bin/hdfs dfs -mkdir /demo1

操作:

hdfs dfs -mkdir /flume/suricata

显示:

mkdir: `/flume/suricata’: No such file or directory

不能同时创建两层

hdfs dfs -mkdir /flume

创建成功

然后再:

hdfs dfs -mkdir /flume/suricata

删除文件或文件夹:

hadoop dfs -rm -r /test/aa.txt 删除/test/aa.txt文件(/test/aa.txt可以替换成文件夹就是删除文件夹)

操作:

hdfs dfs -rm -r /flume/suricata

文件夹必须带-r

查看文件可以在hdfsweb,下载查看内容

上传文件:https://blog.csdn.net/tanqu9315/article/details/79065594

写入:https://www.cnblogs.com/shishanyuan/p/4172806.html

配置hadoop端口

几个配置文件含义https://blog.csdn.net/mr_leehy/article/details/77049800

配置文件路径:~/hadoop/etc/Hadoop

core-site.xml:

fs.defaultFS

hdfs://Hadoop1Server:9000

hadoop.tmp.dir

file:/home/user/hadoop/tmp

Abase for other temporary directories.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Flume采集HDFS上的文件,你需要使用Flume的Spooling Directory Source。这个source会监视一个指定目录中的文件,当有新的文件到达时,会将文件内容读取到Flume的Event中,然后将这些Event发送到指定的Channel中。 以下是一个简单的Flume配置文件示例,用于采集HDFS上的文件: ``` # 定义一个agent agent.sources = spoolDir agent.channels = memoryChannel agent.sinks = hdfsSink # 配置spoolDir source agent.sources.spoolDir.type = spooldir agent.sources.spoolDir.spoolDir = /path/to/hdfs/directory agent.sources.spoolDir.fileHeader = true agent.sources.spoolDir.basenameHeader = true agent.sources.spoolDir.batchSize = 1000 agent.sources.spoolDir.batchTimeout = 1000 # 配置memoryChannel channel agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.capacity = 10000 agent.channels.memoryChannel.transactionCapacity = 1000 # 配置hdfsSink sink agent.sinks.hdfsSink.type = hdfs agent.sinks.hdfsSink.hdfs.path = hdfs://namenode:8020/path/to/hdfs/directory agent.sinks.hdfsSink.hdfs.filePrefix = %{basename} agent.sinks.hdfsSink.hdfs.useLocalTimeStamp = true agent.sinks.hdfsSink.hdfs.fileType = DataStream agent.sinks.hdfsSink.hdfs.writeFormat = Text agent.sinks.hdfsSink.hdfs.rollInterval = 3600 agent.sinks.hdfsSink.hdfs.rollSize = 0 agent.sinks.hdfsSink.hdfs.rollCount = 0 # 配置source和sink之间的channel agent.sources.spoolDir.channels = memoryChannel agent.sinks.hdfsSink.channel = memoryChannel ``` 在这个示例中,我们使用Spooling Directory Source来监视HDFS上的一个目录。当有新的文件到达时,Flume会将文件内容读取到Event中,并将这些Event发送到Memory Channel中。然后,HDFS Sink会从Memory Channel中读取Event,并将其写入HDFS文件中。 注意,这个示例中的配置文件只是一个简单的示例。你需要根据实际情况对其进行修改,以适应你的具体需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值