Hadoop伪分布式安装

一、准备

  1. Hadoop伪分布式安装前的准备:安装VMware、安装CentOS 7、配置CentOS7、为安装Hadoop做好环境准备
  2. Hadoop伪分布式安装:安装WinSCP、安装FinalShell、安装JDK、安装Hadoop
  3. Hadoop验证:在启动Hadoop之前先要格式化,启动后可以通过进程查看、浏览文件以及浏览器访问等方式验证Hadoop是否能正常运行

二、Hadoop伪分布式安装前的准备

Hadoop支持三种安装模式

  • 本地模式:在系统中下载Hadoop,默认情况下,他会呗配置为一个独立的模式,用于运行Java程序,没有太多实用价值,不做详解;
  • 伪分布式模式:在单台机器上的分布式模拟,这种模式对开发非常有用;
  • 安全分布式模式:又叫集群安装,Hadoop安装在最少两台及玄机的集群中。

1. 安装VMware

2. 安装CentOS 7

3. 配置CentOS 7

  • 设置IP```shell

    查看本机IP

    ifconfig

    配置成固定IP

    ```
    image.png
  • 修改主机名```shell

    永久修改主机名为hadoop0

    切换到root用户

    su root hostnameclt set-hostname hadoop0 restart ```

  • 配置hosts文件```shell vim /etc/hosts

    在文件末尾添加一行

    192.168.186.129 hadoop0 ``` image.png
    > 如果IP地址有改变,/etc/hosts中的IP必须爷手动同步更改

  • 关闭防火墙```shell

    开启防火墙

    systemctl start firewalld.service

    重启防火墙

    systemctl restart firewalld.service

    关闭防火墙

    systemctl stop firewalld.service

    查看防火墙状态

    systemctl status firewalld.service

    开机禁用防火墙

    systemctl disable firewalld.service ```

    在生产环境中,服务器防火墙是不能关闭的,否则有重大安全风险 只能配置防火墙规则,打开特定端口

  • 禁用selinux
    修改/etc/selinux/config,永久关闭selunux安全策略shell vim /etc/selinux/config SELINUX=disabled
    image.png
  • 设置SSH免密码登陆(先ssh一下,验证登陆需要密码)
    Hadoop各组件之间使用SSH登陆,为了免输密码,可以设计SSH免密码登陆```shell

    进入密钥存放目录

    cd /root/.ssh

    删除旧密码

    rm -rf *

    生成密码

    ssh-keygen -t dsa

    一路回车

    将生成的密钥文件id_dsa.pub复制到SSH指定的密钥文件authorized_keys中

    cat id_dsa.pub >>authorized_keys

    测试SSH免密码登陆是否成功

    ssh hadoop0

    输入yes继续,如果没有提示输入密码,则证明免密码登陆成功

    ``` image.pngimage.png

重启,使修改主机名等配置生效

4. 安装WinSCP

image.pngimage.pngimage.png
成功连接后,可以选中文件,右键-上传,上传至虚拟机

5. 安装FinalShell

image.png

选择SSH登陆

填入IP,用户名和密码
image.png
image.png

6. 下载JDK

链接:

https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html

image.png

使用WinSCP

用WinSCP传输到hadoop0的/usr/local目录下

image.png

使用FinalShell

  1. # 切换目录到/usr/local
  2. cd /usr/local
  3. # 解压jdk文件
  4. tar -zxvf jdk-8u271-linux-x64.tar.gz
  5. # 配置环境变量
  6. # 1.使用mv命令重命名解压后的文件夹jdk1.8.0_271为jdk
  7. mv jdk1.8.0_271/ jdk
  8. # 2.将jdk安装目录进行配置
  9. vim /etc/profile
  10. # 进入编辑
  11. i
  12. export JAVA_HOME=/usr/local/jdk
  13. export PATH=$PATH:$JAVA_HOME/bin
  14. # 退出编辑
  15. esc
  16. # 保存
  17. :wq
  18. # 使设置生效
  19. source /etc/profile
  20. # 验证
  21. java -version

image.png
image.png
image.png

7. 安装Hadoop

下载链接:

https://archive.apache.org/dist/hadoop/common/hadoop-3.0.0/

使用WinSCP

同理上传到/usr/local目录下

使用FinalShell

配置Hadoop
  1. tar -zxvf hadoop-3.0.0.tar.gz
  2. ls
  3. mv hadoop-3.0.0 hadoop

image.png

配置环境变量

  1. vim /etc/profile
  2. i
  3. export JAVA_HOME=/usr/local/jdk
  4. export HADOOP_HOME=/usr/local/hadoop
  5. export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  6. export HDFS_NAMENODE_USER=root
  7. export HDFS_DATANODE_USER=root
  8. export HDFS_SECONDARYNAMENODE_USER=root
  9. export YARN_RESOURCEMANAGER_USER=root
  10. export YARN_NODEMANAGER_USER=root
  11. ESC
  12. :wq
  13. source /etc/profile

image.png

$HADOOP_HOME/bin和¥HADOOP_HOME/sbin都必须加入到PATH中 Hadoop的早期版本不需要将Hadoop各进程的用户设为root

配置hadoop-env.sh

切换目录至/usr/local/hadoop/ect/hadoop

  1. cd /usr/local/hadoop/ect/hadoop

image.png

修改hadoop-env.sh

  1. vim hadoop-env.sh
  2. # 将第37行解除注释,并更改
  3. JAVA_HOME=/usr/local/jdk

image.png

  1. vim core-site.xml
  2. # 在<configuration>标签间加入如下内容
  1. # 配置HDFS的访问URL和端口
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://hadoop0:9000/</value>
  5. <description>NameNode URI</description>
  6. </property>
  7. </configuration>

配置hdfs-site.xml

切换到/usr/local/hadoop/etc/hadoop目录下

vim hdfs-site.xml
# 在<configuration>标签后加入如下内容
# 配置访问NameNode和DataNode的元数据存储路径以及NameNode和SecondNameNode的访问端口
<property>
<name>dfs.datanode.data.dir</name><value>file:///usr/local/hadoop/data/datanode</value>
</property>
<property>
<name>dfs.namenode.name.dir</name><value>file:///usr/local/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop0:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name><value>hadoop0:50090</value>
</property>

image.png

配置yarn-site.xml
vim yarn-site.xml
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>hadoop0:8025</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>hadoop0:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>hadoop0:8050</value>
</property>

image.png

如果在使用Hadoop中出错或者启动不了,可能需要重新格式化

# 停止Hadoop
cd /usr/local/hadoop
stop-all.sh
# 删除data和logs文件夹
rm -rf data/ logs/
# 格式化
hadoop namenode -format

8. 启动Hadoop

cd /usr/local/hadoop/sbin
start-all.sh

image.png

9. 查看Hadoop相关进程

jps

image.png

10. 浏览文件

hadoop fs -ls /

image.png

11. 浏览器访问

打开CentOS,使用内置浏览器打开:http://hadoop0:50070

或者打开:http://192.168.186.129:50070

image.png

NameNode端口:50070
DataNode端口:9864
SecondaryNameNode端口:50090
ResouceManager端口:8088

12.错误:

  • 如果出现Name or Service not Known,那么请检查hosts文件中主机名是否配置正确
  • 如果格式化失败,那么在改完错误之后,先检查Hadoop安装路径下是否出现tmp目录,如果出现,那么需要先将这个tmp目录删除之后再重新格式化