Hadoop-hdfs学习使用/ssh设置免密登录

教程

Hadoop是一个开源的分布式计算和存储框架,由apache基金会开发维护。Hadoop使用Java开发,其核心部分包括hdfs和mapreduce

历史

Google的三大论文gfs、mapreduce、bigtable。gfs是一个在计算机集群中运行的分布式文件系统,hdfs是其实现版,mapreduce是一个分布式计算方式

作用

Hadoop在某种程度上将多机组成了一台计算机,hdfs就相当于硬盘,mapreduce就相当于cpu

运行环境

先买了一个阿里云的服务器ecs,默认是用root登录的,我们可以创建一个新的账号

sudo useradd usrname
sudo passwd usrname

会报错
会有报错Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
这时我们找到 /etc/ssh/sshd_config
设置 PasswordAuthentication yes
就可以了
就可以登录了。

似乎这个hdfs强烈推荐用docker,也装一下吧
参考这里
https://www.runoob.com/docker/centos-docker-install.html

docker部署

docker pull centos:8
docker run -d centos:8 /usr/sbin/init
docker ps
docker exec f38f83175fca echo "Hello docker"

有点抽象,在给docker装jdk的过程中,遇到了

Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                                                                                                       668  B/s | 150  B     00:00    
Errors during downloading metadata for repository 'appstream':
  - Status code: 404 for https://mirrors.ustc.edu.cn/centos/8/AppStream/x86_64/os/repodata/repomd.xml (IP: 202.141.176.110)
Error: Failed to download metadata for repo 'appstream': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

无奈只能把hadoop装在docker外的裸机上

yum install -y java-1.8.0-openjdk-devel openssh-clients openssh-server

hadoop安装

下载3.2.4版本,有点子慢,要三个小时才能下载玩

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
tar zxvf hadoop-3.2.4.tar.gz
sudo mv hadoop-3.2.4 /usr/local/hadoop
echo "export HADOOP_HOME=/usr/local/hadoop" >> /etc/bashrc # 写入rc如zshrc
echo "export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin" >> /etc/bashrc 
echo "export JAVA_HOME=/usr" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh # 以root执行
echo "export HADOOP_HOME=/usr/local/hadoop" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
hadoop version

在这里插入图片描述

配置与使用

之前提到过的 Hadoop 三种模式:单机模式、伪集群模式和集群模式。

单机模式:Hadoop 仅作为库存在,可以在单计算机上执行 MapReduce 任务,仅用于开发者搭建学习和试验环境。

伪集群模式:此模式 Hadoop 将以守护进程的形式在单机运行,一般用于开发者搭建学习和试验环境。

集群模式:此模式是 Hadoop 的生产环境模式,也就是说这才是 Hadoop 真正使用的模式,用于提供生产级服务。

配置与启动

确认一下Hadoop存在

hadoop version

将本机添加到ssh信任列表
参考
https://www.cnblogs.com/lavender-pansy/p/14483479.html

cat id_rsa.pub >> authorized_keys
# 将公钥追加到authorized_keys文件中去
chmod 600 authorized_keys
# 将authorized_keys文件权限更改为600
# 至此设置免密操作完毕

查看本机IP地址,取第一个结果

ip addr | grep 172

这里我们修改两个文件:core-site.xml 和 hdfs-site.xml

在 core-site.xml 中,我们在 标签下添加属性:

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://<你的IP>:9000</value>
</property>

在 hdfs-site.xml 中的 标签下添加属性:

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

执行

hdfs namenode -format
start-dfs.sh

这里要注意,这两个指令都是可以在任意路径执行的
可以看到在sbin下有这个脚本,说明设置HOME就能够让os找到脚本的位置
在这里插入图片描述
启动分三个步骤,分别启动 NameNode、DataNode 和 Secondary NameNode。

我们可以运行 jps 来查看 Java 进程:

jps

注意

  1. $HADOOP_HOME/etc/hadoop/core-site.xml 中IP要选择带172开头的私网IP,否则本机使用会有问题
  2. 注意设置本机ssh信任,设置过后ssh localhost不需要填写密码。否则start脚本会报错。

使用

➜  ~ hadoop fs -mkdir /hello
➜  ~ ls
download  workspace
➜  ~ touch hello.txt
➜  ~ vim hello.txt           
➜  ~ ls
download  hello.txt  workspace
➜  ~ hadoop fs -put hello.txt /hello/
➜  ~ cd workspace                    
➜  workspace ls
hello.cpp
➜  workspace hadoop fs -get /hello/hello.txt 
➜  workspace ls
hello.cpp  hello.txt
➜  workspace cat hello.txt                            
hello hdfs

关于api的使用见下一篇文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值