首页 > 技术文章 > Hadoop搭建与常见问题解决方案

supershuai 2020-02-28 14:19 原文

前言###

先说一下当前环境:Ubuntu18.04 jdk1.8 Hadoop选用-2.6.0-cdh5.15.1 用户名:supershuai-VirtualBox
Hadoop的下载地址:http://archive.cloudera.com/cdh5/cdh/5/ hoodp-native下载对应的版本http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.*.0.tar
在安装Hadoop之前,首先要安装好Java环境,配置好全局变量,这里说一下我的所有环境变量都是在/etc/profile中配置的,如果你是使用的其它版本linux则在其它版本环境变量文件中进行配置(如centos7中的~/.bash_profile文件)。
其次你要做的是确保ssh服务能够正常启动,并进一步设置ssh的免密登录,主要是为了解决每次启动Hadoop时频繁的输入密码验证的操作。ssh免密操作:

执行:ssh-keygen -t rsa
执行:cd ~/.ssh
执行:ll 对文件夹内容进行查看,此时会发现私钥与公钥文件,接下来就是把公钥写入 authorized_keys文件中
执行:cat id_rda_pub >> authorized_keys
执行:sudo chmod 600 authorized_keys

设置以后可以使用 ssh localhost 查看下是否已经可以免密远程连接

Hadoop安装与设置###

首先将下载的压缩包使用tar命令进行解压到本地安装目录,目录自行设定。
配置hadoop—env.sh文件(安装目录下的/etc/hadoop下):
vi hadoop-env.sh
加入:

export JAVA_HOME=你的jdk目录

配置core-site.xml文件
vi etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://supershuai-VirtualBox:8020</value>
    </property>
</configuration>

修改成你的机器名:8020
配置hdfs-site.xml文件
vi etc/hadoop/hdfs-site.xm

(目前环境是单台机器所以设置一个副本,到用的集群后再改   )
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

配置 /tem 启动后清除问题 hdfs-site.xml:( /opt/tmp是新建的放置文件的目录)
vi etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/tmp</value>
    </property>
</configuration>

配置slaves
vi slaves
修改为机器名

最后添加系统变量:
vi etc/profile

export JAVA_HOME=Java目录
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export HADOOP_HOME=Hadoop目录
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

配置后source下profile 文件:source etc/profile

启动与常见问题###

第一次启动首先格式化文件
执行 : hdfs namenode -format
在sbin目录下的
执行 : ./start-dfs.sh

1.仍然需要输入密码的问题

chown supershuai: /home/hadoop/.ssh         (supershuai是我的用户名名)
chown supershuai: /home/hadoop/.ssh/*  
chmod 700 /home/hadoop/.ssh  
chmod 600 /home/hadoop/.ssh/* 

2.Unable to load native-hadoop library for your platform... using builtin-java classes where applicable的问题

将native文件解压到Hadoop目录下的lib文件以及lib文件下的native文件
执行: tar -xvf hadoop-native-64-2.6.0.tar -C $HADOOP_HOME/lib/native
执行: tar -xvf hadoop-native-64-2.6.0.tar -C $HADOOP_HOME/lib
配置到环境变量
vim /etc/profile
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

3.ssh在Hadoop中的连接被拒绝问题

ssh/sshd_config文件配置
辑配置文件,允许以 root 用户通过 ssh 登录:sudo vi /etc/ssh/sshd_config
找到:PermitRootLogin prohibit-password禁用
添加:PermitRootLogin yes

4.jps启动后只有jps进程
这时建议要去查看logs下的.log文档,根据具体的问题进行解决。包括删除tmp目录下的文件并且重新执行 hdfs namenode -format命令
当然以上的所有文件要在普通用户的管理和创建下进行,不然会因为权限问题导致很多错误。
5.防火墙问题

关闭防火墙:   sudo ufw disable

开启防火墙:    sudo ufw enable

开放某一个 PORT 8080:    sudo ufw allow 8080

删除一个已经开启的 PORT 8080:    sudo ufw delete allow 8080

查看防火墙状态:   sudo ufw status

推荐阅读