Ubuntu16.04 搭建伪分布式Hadoop环境

0x00 java环境配置

Hadoop需要java环境,首先检测是否存在java环境:

java –version

如果没有,则需要去Oracle官网下载jdk:

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

选择linux x64:

Ubuntu16.04 搭建伪分布式Hadoop环境

 下载后解压到/opt目录下:

tar -zxvf jdk-8u181-linux-x64.tar.gz -C /opt

然后添加环境变量:

修改配置文件/etc/profile,追加以下内容:

export JAVA_HOME="/opt/jdk1.8.0_181"
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

这里第一行的路径要根据jdk安装的不同位置而改变

然后重启,再次测试:

Ubuntu16.04 搭建伪分布式Hadoop环境

 可以看到已经配置好java环境了

0x01 设置ssh免密登录

启动ssh:

sudo /etc/init.d/ssh start

设置免密码登录:

ssh-keygen -t rsa

一直回车即可

导入authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

检测是否可以免密登录:

Ubuntu16.04 搭建伪分布式Hadoop环境

0x02 创建新用户

创建一个名字为hadoop的普通用户(虽然我也不明白为啥非得创建一个新用户....)

sudo adduser hadoop

这里一开始用的useradd,但是创建了之后进不去.....用adduser就好了

给hadoop用户sudo权限 /etc/sudoers里面修改:

root    ALL=(ALL)       ALL
hadoop ALL=(root) NOPASSWD:ALL

切换到hadoop用户

su - hadoop

创建存放hadoop文件的目录:

sudo mkdir /opt/modules

将hadoop文件夹的所有者指定为hadoop用户:

sudo chown -R hadoop:hadoop /opt/modules

0x03 配置hadoop

下载hadoop压缩包:

https://downloads.apache.org/hadoop/common/hadoop-2.10.0/

选择:

Ubuntu16.04 搭建伪分布式Hadoop环境

 把它复制到/opt/modules目录下。

 解压:

tar -zxvf hadoop-2.10.0.tar.gz

配置环境变量,在etc/profile文件里追加如下内容:

export HADOOP_HOME="/opt/modules/hadoop-2.10.0"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

重启使得配置生效。

验证HADOOP_HOME参数:

Ubuntu16.04 搭建伪分布式Hadoop环境

 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数:

sudo gedit  ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

修改JAVA_HOME参数为:

export JAVA_HOME="/opt/jdk1.8.0_181"

配置core-site.xml,在/opt/modules/hadoop-2.10.0/etc/hadoop文件夹中找到core-site.xml文件,插入如下内容:

<configuration>
        <property>
             <name>hadoop.tmp.dir</name>
             <value>file:/opt/modules/hadoop-2.10.0/tmp</value>
             <description>Abase for other temporary directories.</description>
        </property>
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://localhost:9000</value>
        </property>
</configuration>

修改配置文件 hdfs-site.xml,也是在同一个文件夹下,找到该文件,插入如下内容:

<configuration>
        <property>
             <name>dfs.replication</name>
             <value>1</value>
        </property>
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/opt/modules/hadoop-2.10.0/tmp/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/opt/modules/hadoop-2.10.0/tmp/dfs/data</value>
        </property>

</configuration>

配置yarn-site.xml,也是在同一个文件夹下:

<configuration> 
<!-- Site specific YARN configuration properties -->
    <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.address</name> 
        <value>127.0.0.1:8032</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.scheduler.address</name> 
        <value>127.0.0.1:8030</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.resource-tracker.address</name> 
        <value>127.0.0.1:8031</value> 
    </property> 
</configuration>

重启系统使配置生效

0x04 验证Hadoop是否配置成功

hadoop版本:

Ubuntu16.04 搭建伪分布式Hadoop环境

 启动HDFS,格式化namenode

hdfs namenode -format

Ubuntu16.04 搭建伪分布式Hadoop环境

 出现了successfully formatted则代表格式化成功,如果出现了错误,需要仔细检查之前对三个文件的修改,路径有没有错误(需要根据hadoop的安装路径来更改,不能照抄)

启动hdfs:

start-all.sh

Ubuntu16.04 搭建伪分布式Hadoop环境

 这个时候发现出现了错误,提示无法建立连接,这个时候需要找到/etv/ssh/ssh_config
在最后添加:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

再次启动就没有问题了。

显示进程:

Ubuntu16.04 搭建伪分布式Hadoop环境

 出现了6个进程,说明正确。

访问http://localhost:50070/,出现:
Ubuntu16.04 搭建伪分布式Hadoop环境

 访问http://localhost:8088/:

Ubuntu16.04 搭建伪分布式Hadoop环境

 说明已经完全搭建好了~~