注:由于是学习过程的记录,一些细节的问题往往会出现,因此每篇文章会不定期的更新
hadoop
由于hadoop是基于java编写的,我们来看下一其解压后的根目录下有什么文件:
是一些命令文件
在本地运行MapReduce作业
- 格式化文件系统
root@Gavin:/usr/local/hadoop-2.10.2# bin/hdfs namenode -format
- 启动NameNode 守护进程 和DataNode守护进程
启动之前先看一下 sbin文件夹下的内容
start-dfs.sh文件中的内容
可以看到文件中有 NameNode和DataNode
这不得不让我去看看hadoop-env.sh中 到底配置了什么
1,设置java环境的
2,调度任务
3,其他的参数
下面启动NameNode 守护进程 和DataNode守护进程
启动失败了,报错了----ssh本地连接被拒绝,正在查找原因
尝试了很多办法~
以下是ubuntu的
1,开启22端口的访问权限
一直处于这个状态~应该是失败了
换个系统再试一下
以下是fedora36的
也是开启了端口22的访问
结果跟ubuntu的一样
搞什么呀,期间我还尝试开启了window的22端口
结果还是失败,没招了,菜鸡一个,只能换 虚拟机了
遭老醉了!!
虚拟机只有centos
按照惯性,重头驴一遍吧!!!
注意,这是一个新的开始
- 安装jdk ,openssh-server ,openssh-client
此处省略 几个字 - 添加用户
sudo useradd -m hadoop -s /bin/bash
- 为用户添加密码
sudo passwd hadoop
- 为用户添加权限
在下面光标处添加hadoop ,权限跟root用户一样
这里要强制保存,不然会提示文件只读
- 切换用户:
su hadoop
- 链接到本地
ssh localhost
注:这是截的第二次登录的图,由于之前操作过一遍,第二次不需要输入密码(首次是需要密码的)
所以我们需要配置一下不需要密码即可登录 namenode
配置ssh免密登录
退出本地登录
exit
下面用hadoop用户登录centos
然后链接本地
Namenode作为客户端,要实现无密码公钥认证,连接到datanode上时需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上;
当nameNode通过ssh连接到datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密并发送给nameNode, namenode收到加密数值后,用私钥解密,并将解密数回传给datanode,datanode确认无误后就允许namenode进行连接了;
怎么操作呢?
- 首先进入ssh目录
[hadoop@node1 ~]$ cd ~/.ssh
[hadoop@node1 .ssh]$
生成密钥
ssh-keygen -t rsa
链接本地~仍然需要密码
我内心是拒绝的
查找原因吧~
原来authorized_keys 文件的权限不够
原来权限
-rw-r--r-- 1 hadoop hadoop 563 Mar 2 22:47 authorized_keys
-rw------- 1 hadoop hadoop 2590 Mar 2 22:47 id_rsa
-rw-r--r-- 1 hadoop hadoop 563 Mar 2 22:47 id_rsa.pub
切换权限
-rw------- 1 hadoop hadoop 563 Mar 2 22:47 authorized_keys
-rw------- 1 hadoop hadoop 2590 Mar 2 22:47 id_rsa
-rw-r--r-- 1 hadoop hadoop 563 Mar 2 22:47 id_rsa.pub
链接本地ls
明天继续~