HadoopHadoop我爱编程

hadoop日记2——安装分布式hadoop2.7.3

2017-01-01  本文已影响435人  我是Mr小赵先生

系统:ubuntu 16.04、Apache hadoop2.7.3
教程适用于hadoop2.0以上的系统
教程使用两个节点作为集群环境: 一个作为 Master 节点,局域网 IP 为 192.168.1.100;另一个作为 Slave 节点,局域网 IP 为 192.168.1.101。

hadoop安装对于熟悉linux系统的人来说难度系数会大大的降低,教程比较适合不懂linux的新手。

安装流程

  1. 安装linux ubuntu系统(我安装了linux桌面)
  2. 创建hadoop用户
  3. 更新apt
  4. 安装vim或者gedit
  5. 配置hosts和hostname
  6. 安装SSH、配置SSH无密码登录
  7. 安装java 环境
  8. 安装hadoop2
  9. 配置hadoop2集群/分布式环境
  10. hadoop2异常说明

安装linux ubuntu系统

ubuntu桌面版下载地址(linux新手推荐用桌面版比较容易上手)
http://www.ubuntu.com/download/desktop/

LTS表示 Long Term Support ,长期支持,linux建议安装LTS的

具体安装教程如下(这个教程感觉讲的很详细)
http://www.jb51.net/os/windows/298507.html

创建hadoop用户

这一步可以省略,如果你的linux系统已经有了别的用户
linux命令

sudo useradd -m hadoop -s /bin/bash  #这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell
sudo passwd hadoop  #设置密码,按提示输入两次密码
sudo adduser hadoop sudo  #为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题

最后注销当前用户(点击屏幕右上角的齿轮,选择注销),在登陆界面使用刚创建的 hadoop 用户进行登陆

更新apt

linux命令

sudo apt-get update  #更新apt

安装vim或者gedit

新手推荐安装gedit,比较符合windows操作习惯
安装命令

sudo apt-get install vim  #安装vim
sudo apt-get install gedit  #安装gedit

后续需要更改一些配置文件,会用到vim或者gedit,请根据个人喜欢自行使用

配置hosts和hostname
配置以后方便管理,同时可以使用主机名来访问局域网里的其它主机

sudo vim /etc/hosts  #配置hosts

例如本教程使用两个节点的名称与对应的 IP 关系如下:

192.168.1.100   Master
192.168.1.101   Slave1
sudo vim /etc/hostname  #配置hostname

例如本教程将192.168.1.100的主机名改成Master,将192。168.1.101改成Salve1
此时应该重启下系统

安装SSH配置SSH无密码登录

集群、单节点模式都需要用到 SSH 登陆(master),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server

sudo apt-get install openssh-server  #安装SSH server
ssh localhost  #使用命令登录本机,此时会有SSH首次登陆提示,输入 yes 。然后按提示输入密码,这样就登陆到本机了,然后输入【exit】退出

配置SSH无密码登录
利用 ssh-keygen 生成密钥

cd ~/.ssh/  #若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa  #会有提示,都按回车就可以,最后可以输入ls命令查看目录下的文件

让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行:

cat ./id_rsa.pub >> ./authorized_keys  #完成后可执行 ssh Master,就可以无密码登录到本地,验证以后记得输入exit,返回原来终端

在Master 节点上将公匙id_rsa.pub传输到 Slave1 节点:

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/  #这里将公钥放在了Slave1节点/home/hadoop/目录下,scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。

在 Slave1 节点上,将 ssh 公匙加入授权:

mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub    # 用完就可以删掉了

最好可以在Master节点通过ssh Slave1命令来测试下是否可以无密码登录到Salve1节点上

安装java环境

下载oracle JDK,可以通过https://wiki.apache.org/hadoop/HadoopJavaVersions 查看要hadoop支持哪些版本JDK

安装

sudo tar -zxf {jdk存放的目录}/jdk-xxx.linux.tar.gz -C /usr/local    # 解压到/usr/local中

配置Javahome

sudo gedit /etc/profile  #打开配置文件

在打开的文件末尾加入如下变量,然后保存

export JAVA_HOME={jdk安装目录}  #例如/usr/local/java/jdk1.8.0_111
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

校验是否配置成功

echo $JAVA_HOME     # 检验变量值
java -version
$JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样
出现如下提示表示配置成功,如果无反映可以尝试重启系统

安装hadoop2
我们将hadoop2安装在Master主机上面,一切配置好之后,把hadoop2直接复制到Slave1主机上面即可
下面的操作都是在Master主机上进行的

下载hadoop2
Hadoop2可以通过http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载 “stable” 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

hadoop-2.7.3.tar.gz是我们要下载的文件

安装hadoop2

sudo tar -zxf {hadoop下载路径}/hadoop-2.7.3.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.3/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

校验hadoop2是否安装成功

cd /usr/local/hadoop
./bin/hadoop version
看到这个信息表示hadoop2安装成功
配置hadoop环境变量
将 Hadoop 安装目录加入 PATH 变量中,这样就可以在任意目录中直接使用 hadoo、hdfs 等命令了。首先执行 sudo gedit /etc/profile
修改PATH,在PATH末尾加入:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
加上之前配置的java环境,最好的PATH如下
export PATH=$PATH:$JAVA_HOME/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

配置hadoop2集群/分布式环境,在Master主机上进行配置

集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
官方文档地址【2.7.3doc】:http://hadoop.apache.org/docs/r2.7.3/

  1. 文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。
  2. core-site.xml
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>
  1. 文件 hdfs-site.xml,dfs.replication 一般设为 3表示有3个Slave节点,但我们只有一个 Slave 节点,所以 dfs.replication 的值设为 1:
<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>
  1. 文件 mapred-site.xml (hadoop2.7.3需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>
  1. yarn-site.xml
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

将配置好的hadoop2从Master主机复制到其它Slave主机

Master节点的hadoop配置好以后,将/usr/local/hadoop文件夹复制到各个Slave节点。

在Master节点执行

cd /usr/local
tar -zcf ~/hadoop.master.tar.gz ./hadoop   #将hadoop文件夹压缩到/home/hadoop/目录下
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop  #将hadoop.master.tar.gz从Master主机复制到Salve1主机/home/hadoop目录下

在Salve节点执行

sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local  #解压安装
sudo chown -R hadoop /usr/local/hadoop  #给hadoop目录赋予读写权限

格式化NameNode

首次启动需要先在 Master 节点执行 NameNode 的格式化:

hdfs namenode -format       # 首次运行需要执行初始化,之后不需要

启动hadoop2

在Master节点执行如下操作

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

通过命令jps可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,在 Slave 节点可以看到 DataNode 和 NodeManager 进程。缺少任一进程都表示出错。我们通过浏览器打开网址:http://master:50070/查看datanode和namenode的状态,如果有异常通过查看集群log文件来排查异常。

hadoop2异常说明

上一篇下一篇

猜你喜欢

热点阅读