教程
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
echo "export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin" >> /etc/bashrc
echo "export JAVA_HOME=/usr" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
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
chmod 600 authorized_keys
查看本机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
注意
- $HADOOP_HOME/etc/hadoop/core-site.xml 中IP要选择带172开头的私网IP,否则本机使用会有问题
- 注意设置本机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的使用见下一篇文章
|