[hadoop]Hadoop环境的搭建

Posted 爱折腾的稻草

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[hadoop]Hadoop环境的搭建相关的知识,希望对你有一定的参考价值。

No.1 硬件配置

  • Centos 7 64位

    • IP:192.168.42.129

    • 主机名:admin

    • 安装用户:root/root

    • 新建用户: hadoop/hadoop

    • 创建用户:useradd -d /user/hadoop -m hadoop

    • 用户密码:passwd hadoop

  • 用useradd新增的用户不能直接用ssh远程访问,需要修改ssh相关配置,如下:

vi /etc/ssh/sshd_config 

添加:

# 多个用户用空格隔开
AllowUsers root@192.168.1.32 admin

No.2 安装JDK

安装JDK1.7或者以上版本。这里以jdk1.7.0_79为例。

  • 2.1、下载jdk-7u79-Linux-x64.gz,解压到/usr/Java/jdk1.7.0_79。

  • 2.2、在/root/.bash_profile中添加如下配置:

export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
  • 2.3、使环境变量生效

#source ~/.bash_profile 
  • 2.4、安装验证

java -version 
Java version "1.7.0_79"
Java(TMSE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02mixed mode)

No.3 配置SSH无密码登陆

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  • 验证ssh

# ssh localhost 
  • 不需要输入密码即可登录。

No.4 安装Hadoop2.7

4.1、下载Hadoop2.7.1
4.2、解压安装
  • 1)复制 Hadoop-2.7.1.tar.gz 到/usr/hadoop目录下并执行解压:

//解压后目录为:/usr/hadoop/hadoop-2.7.1 

#tar -xzvf hadoop-2.7.1.tar.gz 
  • 2)在/usr/hadoop/目录下,建立tmp、hdfs/name、hdfs/data目录

#mkdir /usr/hadoop/soft    --存放安装文件
#mkdir /usr/hadoop/tmp 
#mkdir /usr/hadoop/hdfs 
#mkdir /usr/hadoop/hdfs/data 
#mkdir /usr/hadoop/hdfs/name
  • 3)设置环境变量

#vi ~/.bash_profile

//添加如下配置
# set hadoop path
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin
  • 4),使环境变量生效

$source ~/.bash_profile
4.3,Hadoop配置

伪分布式安装:只有一个节点的集群,在这个集群中,这个节点既是Master,也是Slave,既是NameNode,也是DataNode,既是JobTracker,也是TaskTracker

进入$HADOOP_HOME/etc/hadoop目录,配置 hadoop-env.sh等。涉及的配置文件如下: 
hadoop-2.7.1/etc/hadoop/hadoop-env.sh 
hadoop-2.7.1/etc/hadoop/yarn-env.sh 
hadoop-2.7.1/etc/hadoop/core-site.xml 
hadoop-2.7.1/etc/hadoop/hdfs-site.xml 
hadoop-2.7.1/etc/hadoop/mapred-site.xml 
hadoop-2.7.1/etc/hadoop/yarn-site.xml
  • 1)配置hadoop-env.sh

# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_111
  • 2)配置yarn-env.sh

#export JAVA_HOME=/home/y/libexec/jdk1.7.0/
export JAVA_HOME=/usr/java/jdk1.8.0_111
  • 3)配置core-site.xml 添加如下配置:

<configuration>
 <property>
    <!-- fs.default.name 在Yarn中是fs.defaultFS -->
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
    <description>定义HadoopMaster的URI和端口URI,文件系统://namenode标识:端口号</description>
</property>

<property>
    <name>fs.checkpoint.dir</name>
    <value>/opt/data/hadoop1/hdfs/namesecondary1</value>
    <description>定义hadoop的name备份的路径,官方文档说是读取这个,写入dfs.name.dir</description>
</property>

<property>
    <name>fs.checkpoint.period</name>
    <value>1800</value>
    <description>定义name备份的备份间隔时间,秒为单位,只对snn生效,默认一小时</description>
</property>

<property>
    <name>fs.checkpoint.size</name>
    <value>33554432</value>
    <description>以日志大小间隔做备份间隔,只对snn生效,默认64M</description>
</property>

<property>
    <name>fs.checkpoint.size</name>
    <value>33554432</value>
    <description>以日志大小间隔做备份间隔,只对snn生效,默认64M</description>
</property>


<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/hadoop/tmp</value>
    <description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
    
  • 4)配置hdfs-site.xml 添加如下配置

<configuration>
    <!—hdfs-site.xml-->
    <property>
        <!-—dfs.name.dir 在新框架中:分成 dfs.namenode.name.dir( 存放 naname table 和 dfs.namenode.edits.dir(存放 edit 文件),默认是同一个目录-->
        <name>dfs.namenode.name.dir</name>
        <value>/usr/hadoop/hdfs/namenode/name</value>
        <description>namenode上存储hdfs名字空间元数据 </description> 
    </property>
    <property>
        <!-—dfs.name.dir 在新框架中:分成 dfs.namenode.name.dir( 存放 naname table 和 dfs.namenode.edits.dir(存放 edit 文件),默认是同一个目录-->
        <name>dfs.namenode.edits.dir</name>
        <value>/usr/hadoop/hdfs/namenode/edits</value>
        <description>namenode上存储hdfs名字空间元数据 </description> 
    </property>

    <property>
        <name>dfs.data.dir</name>
        <value>/usr/hadoop/hdfs/data</value>
        <description>datanode上数据块的物理存储位置,可以写多块硬盘,逗号分隔</description>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>1</value>
        <description>副本个数,配置默认是3,应小于datanode机器数量,理论上份数越多跑数速度越快,但是需要的存储空间也更多。有钱人可以调5或者6</description>
    </property>

    <property>
        <name>dfs.datanode.du.reserved</name>
        <value>1073741824</value>
        <description>每块磁盘所保留的空间大小,需要设置一些,主要是给非hdfs文件使用,默认是不保留,0字节</description>
    </property>

    <property>
        <name>dfs.web.ugi</name>
        <value>nobody,nobody</value>
        <description>NN,JT等所使用的web tracker页面服务器所使用的用户和组</description>
    </property>

    <property>
        <name>dfs.df.interval</name>
        <value>6000</value>
        <description>磁盘用量统计自动刷新时间,单位是毫秒</description>
    </property>

    <property>
        <name>dfs.client.block.write.retries</name>
        <value>3</value>
        <description>数据块写入的最多重试次数,在此次数之前不会捕获失败。</description>
    </property>

    <property>
        <name>dfs.client.block.write.retries</name>
        <value>3</value>
        <description>数据块写入的最多重试次数,在此次数之前不会捕获失败。</description>
    </property>


    <property>
        <name>dfs.heartbeat.interval</name>
        <value>3</value>
        <description>datanode心跳检测时间间隔,单位秒。</description>
    </property>

    <property>
        <name>dfs.namenode.handler.count</name>
        <value>10</value>
        <description>namenode启动后开启的线程数。</description>
    </property>

    <property>
        <name>dfs.datanode.http.address</name>
        <value>0.0.0.0:50075</value>
        <description>DN的tracker页面监听地址和端口。</description>
    </property>

    <property>
        <name>dfs.http.address</name>
        <value>192.168.42.129:50070</value>
        <description>NN的tracker页面监听地址和端口。</description>
    </property>

</configuration>
    
  • 5)配置mapred-site.xml 添加如下配置:

<configuration>
    <!-- 新框架支持第三方 MapReduce 开发框架以支持如 SmartTalk/DGSG 等非 Yarn 架构,注意通常情况下这个配置的值都设置为 Yarn,如果没有配置这项,那么提交的 Yarn job 只会运行在 locale 模式,而不是分布式模式。-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 新框架中已改为 Yarn-site.xml 中的 resouceManager 及 nodeManager 具体配置项,新框架中历史 job 的查询已从 Job tracker 剥离,归入单独的 mapreduce.jobtracker.jobhistory 相关配置, 
    <property>
        <name>mapred.job.tracker.http.address</name>
        <value>0.0.0.0:50030</value>
        <description>jobtracker的tracker页面服务监听地址</description>
    </property>
    <property>
        <name>mapred.job.tracker.handler.count</name>
        <value>15</value>
        <description>jobtracker服务的线程数</description>
    </property>
    <property>
        <name>mapred.jobtracker.taskScheduler</name>
        <value>0.0.0.0:50030</value>
        <description>重要的东西,开启任务管理器,不设置的话,hadoop默认是FIFO调度器,其他可以使用公平和计算能力调度器</description>
    </property>
    -->

</configuration>

  • 6)配置yarn-site.xml 添加如下配置:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <!-- 新框架中各个 task 的资源调度及运行状况通过通过该 web 界面访问 -->
        <name>yarn.resourcemanager.webapp.address</name>
        <value>192.168.42.129:8099</value>
    </property>
</configuration>
    
4.4、Hadoop启动
  • 1)格式化namenode

$ bin/hdfs namenode –format
  • 2)启动NameNode 和 DataNode 守护进程

$ sbin/start-dfs.sh
  • 3)启动ResourceManager 和 NodeManager 守护进程

$ sbin/start-yarn.sh
4.5、启动验证

执行jps命令,有如下进程,说明Hadoop正常启动

# jps
6097 NodeManager
11044 Jps
7497 -- process information unavailable
8256 Worker
5999 ResourceManager
5122 SecondaryNameNode
8106 Master
4836 NameNode
4957 DataNode
4.6、打开浏览器输入:
http://192.168.42.129:50070  查看的信息

如果无法访问,则查看linux系统是否被防火墙拦截了。

·end·
- 如果喜欢,快分享给你的朋友们吧 -
我们一起愉快的玩耍吧

以上是关于[hadoop]Hadoop环境的搭建的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse搭建Hadoop开发环境二三事

hadoop开发环境搭建

Hadoop运行环境搭建

在Eclipse下搭建Hadoop开发环境

在Eclipse下搭建Hadoop开发环境

怎么在windows上搭建hadoop环境