Hadoop 环境搭建(学习参考)

必备:Linux 、Jdk、Hadoop-2.7.3.tar.gz为例

1
2
3
4
5
6
1.设置Linux基本环境,关闭防火墙、配置主机
2.安装Jdk 并设置环境变量 ~/.bash_profile 验证java环境 java -version
3.安装Hadoop eg: tar -zxvf hadoop-2.7.3.tar.gz -C /安装目录
4.设置HADOOP_HOME 环境变量并生效 验证 hadoop version
5.生成ssh免密登录秘钥 ,配置~/.ssh 公钥验证
6.hadoop 的三种安装模式配置,了解两种运行模式(安全、非安全【只读】)

image


(一)本地模式(单机 n=1)

特点

  • 没有HDFS
  • 只能测试MapReduce程序,处理本地Linux jar文件 如WordCount

配置

  • 配置文件 hadoop-env.sh (haddop 环境变量设置相关)
1
2
3
1. echo $JAVA_HOME
2. 大概26行左右 修改 JAVA_HOME 为上面的目录输出
3. 验证wordcount Demo例子 hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount ~/input/data.txt ~/output

image

(二) 伪分布模式(单机 n=1)

特点

  • 模拟分布式环境,常用于开发调试,具备hadoop的主要功能使用
  • HDFS: namenode+datanode+secondarynamenode
  • Yarn: resourcemanager+nodemanager

配置

  • 配置文件 hadoop-env.sh (haddop 环境变量设置相关)
1
2
1. echo $JAVA_HOME
2. 大概26行左右 修改 JAVA_HOME 为上面的目录输出
  • 配置文件 hadoop-site.xml (haddop 数据冗余度,数据节点dataNode ,名称节点nameNode )
1
2
3
4
5
6
7
8
9
10
11
12
<!--表示数据块的冗余度,默认:3-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>


<!--是否开启HDFS的权限检查,默认true-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
  • 配置文件 core-site.xml (haddop rpc端口,文件系统存储目录等 )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!--配置NameNode地址,9000是RPC通信端口-->
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://bigdata111:9000</value>
    </property>

    <!--HDFS数据保存在Linux的哪个目录,默认值是Linux的tmp目录-->
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/root/training/hadoop-2.7.3/tmp</value>
    </property>
  • 配置文件 mapred-site.xml (默认不存在,需拷贝template,主要作用是指定MapReduce框架 )

    1
    2
    3
    4
    5
    <!--MR运行的框架-->
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
  • 配置文件 yarn-site.xml (利用yarn管理调度hadoop job 洗牌【shuffle】过程 )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!--Yarn的主节点RM的位置-->
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>bigdata111</value>
    </property>

    <!--MapReduce运行方式:shuffle洗牌-->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>

格式化HDFS文件系统

  • hdfs namenode -format
1
Storage directory /xxxx/tmp/dfs/name has been successfully formatted.

启动或停止Hadoop环境

  • start-all.sh stop-all.sh start-dfs.sh

访问或验证


(三)全分布模式#生产模式(单机 n>=3)

准备工作

  • 规划网络资源分配(如图)

image

  • 主机3台:
1
2
3
bigdata112   {nameNode}
bigdata113 {dataNode}
bigdata114 {dataNode}
  • 所有主机关闭防火墙 systemctl status|stop|disable firewalld.service
  • 所有主机配置免密登录
  • nameNode 配置jdk 环境,scp同步dataNode,分别设置jdk环境变量
  • 设置主机nameNode /etc/hosts scp 同步dataNode节点
1
2
3
192.168.157.112 bigdata112
192.168.157.113 bigdata113
192.168.157.114 bigdata114

image

  • 设置同步时间,这里都和NameNode 同步(可设置网络同步)
1
2
3
4
5
6
7
8
设置/etc/ntp.conf
service ntpd restart
ntpdate host //dataNode主机上执行
hwclock --hctosys
hwclock --systohc {哦用这个}
两个参数hctosys、systohc是一对意思相反的参数,
hctosys是将时间从硬件时钟同步到系统,
systohc是将时间从系统同步到硬件时间
  • NameNode安装Hadoop环境并配置环境变量

配置(同伪分布环境配置一样(把节点冗余改为2) 外加上salves配置)

  • 配置文件 hadoop-site.xml (haddop 数据冗余度,数据节点dataNode ,名称节点nameNode )
1
2
3
4
5
6
7
8
9
10
11
12
<!--表示数据块的冗余度,默认:3-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>


<!--是否开启HDFS的权限检查,默认true-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
  • 配置文件 core-site.xml (haddop rpc端口,文件系统存储目录等 )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!--配置NameNode地址,9000是RPC通信端口-->
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://bigdata112:9000</value>
    </property>

    <!--HDFS数据保存在Linux的哪个目录,默认值是Linux的tmp目录-->
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/root/training/hadoop-2.7.3/tmp</value>
    </property>
  • 配置文件 mapred-site.xml (默认不存在,需拷贝template,主要作用是指定MapReduce框架 )

    1
    2
    3
    4
    5
    <!--MR运行的框架-->
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
  • 配置文件 yarn-site.xml (利用yarn管理调度hadoop job 洗牌【shuffle】过程 )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!--Yarn的主节点RM的位置-->
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>bigdata112</value>
    </property>

    <!--MapReduce运行方式:shuffle洗牌-->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
  • 配置文件slaves (主要设置dataNode节点,默认是本机 localhost)

1
2
bigdata113
bigdata114
  • 格式化HDFS文件系统 hdfs namenode -format

  • 把主节点同步到数据节点,设置数据节点hadoop环境变量

1
2
scp -r hadoop-2.7.3/ root@bigdata113:/root/training
scp -r hadoop-2.7.3/ root@bigdata114:/root/training

启动或停止Hadoop环境

  • start-all.sh stop-all.sh start-dfs.sh
    image
    访问或验证
  • web Yarn:http://bigdata112:8088
  • HDFS http:bigdata111:50070(50090)
  • 验证: 执行命令 /jps 查看状态
    image
    image

image


以上涉及的问题会抽时间同步更新并附上


参考链接

参考链接