CentOS7.3集群部署Hadoop2.8.1

CentOS7.3集群部署Hadoop2.8.1

最近一段时间忙于学术,好久没有更新博客了。最近一直好奇hadoop,学hadoop第一步就需要部署hadoop(虽然现在有现成的单节点hadoop可以下载),我自己在部署中遇到了各种各样的问题,陆陆续续弄了几天才搞定。现在我完整的过程写下来,方便大家参考。

  • CentOS73集群部署Hadoop281
    • 一-准备安装包以及相应的软件
    • 二-安装系统配置网络以及其他基本配置
    • 三-安装Hadoop和JAVA
    • 四-hdfs和yarn配置文件
    • 五-复制节点
    • 六-设置免密码通信
    • 七-启动hadoop
    • 八-测试hadoop

最后的效果是4个node的hadoop集群^_^

一、-准备安装包以及相应的软件

系统CentOS7.3 : CentOS-7-x86_64-DVD-1611.iso
Hadoop: hadoop-2.8.1.tar.gz
虚拟机: VMware12
JAVA: jdk-8u144-linux-x64.gz
连接工具: SecureCRT 8.0(也可以不用,方便windows里连接linux输入代码)
传输工具: WinSCP

二、-安装系统,配置网络以及其他基本配置

在VMware新建虚拟机,导入系统安装ISO,选择最小安装(当然也可以桌面版本安装),安装系统。安装完成系统后,进入root帐号。输入ifconfig,查看网络配置。在网络配置中查看网卡的名称,我这里是ens33,当然也可能是其他名字。然后在命令行输入vi /etc/sysconfig/network-scripts/ifcfg-ens33,在下列参数修改为

ONBOOT="yes"
IPADDR="192.168.237.130"
GATEWAY="192.168.237.2"
DNS1="192.168.237.2"

当然这些网络配置也可以在安装CentOS中配置,但切记不要自动配置IP地址,防止IP地址自动更换。
然后使用连接工具,连接这台虚拟机,如果可以正常连接,说明配置正确,以后的任何操作就都可以在连接工具中完成,方便快捷。
修改主机名称
hostname node
然后配置/etc/sysconfig/network
修改以下内容:

NETWORKING=yes
HOSTNAME=node

修改IP组
vi /etc/hosts

192.168.237.130  node
192.168.237.131  node1
192.168.237.132  node2
192.168.237.133  node3

三、-安装Hadoop和JAVA

1.使用传输工具将hadoop和java安装包传输到CentOS中。
2.建立用户组hadoopGroup,并创建Hadoop用户

groupadd hadoopGroup
useradd –d /home/hadoop –g hadoopGroup hadoop

3.解压文件
a) tar –zvxf jdk-8u144-linux-x64.gz 到当前目录
b) 将解压出的JDK文件夹名称修改为jdk1.8,并移动到/usr/local/jdk1.8中
c) tar –zvxf hadoop-2.8.1.tar.gz 到当前目录,并把文件移动到/home/hadoop/hadoop-2.8.1中 (mv hadoop-2.8.1 /home/hadoop/hadoop-2.8.1)

4.创建文件夹
a) mkdir –p /home/hadoop/hadoop-2.8.1/hdfs
b) mkdir –p /home/hadoop/hadoop-2.8.1/name
c) mkdir –p /home/hadoop/hadoop-2.8.1/data
d) mkdir –p /home/hadoop/hadoop-2.8.1/logs
e) mkdir –p /home/hadoop/hadoop-2.8.1/tmp
给hadoopGroup赋权
f) chgrp –R hadoopGroup /home/hadoop/hadoop-2.8.1
g) chmod –R g=rwx /home/hadoop/hadoop-2.8.1

5.导入环境变量
vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/tools/jar:$JAVA_HOME/lib/dt.jar
export HADOOP_HOME=/home/hadoop/hadoop-2.8.1
export PATH=-:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
export HADOOP_LOG_DIR=/home/hadoop/hadoop-2.8.1/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR

6.测试
输入java -version,如果出现

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

说明java配置成功

输入hadoop,如果出现

Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
  CLASSNAME            run the class named CLASSNAME
 or
  where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar             run a jar file
                       note: please use "yarn jar" to launch
                             YARN applications, not this command.
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp   copy file or directories recursively
  archive -archiveName NAME -p  *  create a hadoop archive
  classpath            prints the class path needed to get the
                       Hadoop jar and the required libraries
  credential           interact with credential providers
  daemonlog            get/set the log level for each daemon
  trace                view and modify Hadoop tracing settings

Most commands print help when invoked w/o parameters.

说明hadoop配置成功。

四、-hdfs和yarn配置文件

(以下配置文件均在hadoop安装后文件夹里的etc/hadoop文件夹里)
a) 配置hadoop-env.sh yarn-env.sh mapred-env.sh 里JAVA_HOME的值 JAVA_HOME=/usr/local/jdk1.8
b) 配置slaves

node1
node2
node3

c) 配置core-site.xml

<property>

          <name> fs.defaultFSname>

          <value>hdfs://node:9000value>

property>

  <property>

      <name>hadoop.tmp.dirname>

      <value>/home/hadoop/tmp/hadoop-${user.name}value>

property>

d) 配置hdfs-site.xml

 <property>
             <name>dfs.namenode.http-addressname>
             <value>node:50070value>
        property>
<property>
             <name>dfs.namenode.secondary.http-addressname>
             <value>node1:50090value>
        property>
<property>
             <name>dfs.replicationname>
             <value>3value>
        property>
<property>
             <name>dfs.namenode.name.dirname>
             <value>file:///home/hadoop/hadoop-2.8.1/hdfs/namevalue>
        property>
<property>
             <name>dfs.datanode.data.dirname>
             <value>file:///home/hadoop/hadoop-2.8.1/hdfs/datavalue>
        property>
<property>
             <name>dfs.namenode.checkpoint.dirname>
             <value>file:///home/hadoop/hadoop-2.8.1/hdfs/namesecondaryvalue>
        property>
<property>
             <name>dfs.webhdfs.enabledname>
             <value>truevalue>
        property>
<property>
             <name>dfs.stream-buffer-sizename>
             <value>131072value>
        property>

e) 配置mapred-site.xml

<property>
             <name>mapreduce.framework.namename>
             <value>yarnvalue>
        property>
<property>
             <name>mapreduce.jobhistory.addressname>
             <value>node:10020value>
        property>
<property>
             <name>mapreduce.jobhistory.webapp.addressname>
             <value>node:19888value>
        property>

f) 配置yarn-site.xml

<property>
             <name>yarn.resourcemanager.hostnamename>
             <value>nodevalue>
        property>
<property>
             <name>yarn.nodemanager.aux-servicesname>
             <value>mapreduce_shufflevalue>
        property>
<property>
      <name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>
             <value> org.apache.hadoop.mapred.ShuffleHandler value>
        property>
<property>
             <name>yarn.resourcemanager.addressname>
             <value>node:8032value>
        property>
<property>
             <name>yarn.resourcemanager.scheduler.addressname>
             <value>node:8030value>
        property>
<property>
             <name>yarn.resourcemanager.resource-tracker.addressname>
             <value>node:8031value>
        property>
<property>
             <name>yarn.resourcemanager.admin.addressname>
             <value>node:8033value>
        property>
<property>
             <name>yarn.resourcemanager.webapp.addressname>
             <value>node:8088value>
        property>

五、-复制节点

在VMware中克隆node虚拟机,克隆三个,保证是完整克隆。
同二步骤,修改克隆的虚拟机的IP地址和主机名称,与IP集群中的一一对应
成功与否,可以用连接工具进行检测。

六、-设置免密码通信

在node节点上:
命令行输入

ssh-keygen
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys

来生成SSH-KEY,并放入信任的KEY文本中

其他节点:

ssh-keygen
ssh-copy-id –I ~/.ssh/id.rsa.pub node

来生成SSH-KEY,并放入node中的信任的KEY文本中

在node节点上:

scp /root/.ssh/authorized_keys node1:/root/.ssh/
scp /root/.ssh/authorized_keys node2:/root/.ssh/
scp /root/.ssh/authorized_keys node3:/root/.ssh/

将信任KEY文本发送到其他节点中

七、-启动hadoop

首先初始化hdfs: hdfs namenode -format出现Exiting with status 0 说明成功
命令行中输入start-dfs.shstart-yarn.sh

八、-测试hadoop

选取hadoop内的WordCount例子进行测试。
首先在HDFS上创建目录,执行命令(hdfs dfs 可以换成 hadoop fs):

hdfs dfs -mkdir -p /data/wordcount
hdfs dfs -mkdir -p /output/

将本地文件上传到HDFS中,就是我们要计数的文本,这里选取一个配置文件当作文本:

hdfs dfs -put /home/hadoop/hadoop-2.8.1/etc/hadoop/core-site.xml /data/wordcount/

运行WordCount例子

hadoop jar /home/hadoop/hadoop-2.8.1/mapreduce/hadoop-mapreduce-examples-2.8.1.jar wordcount /data/wordcount /output/wordcount

运行的结果保存在HDFS中的/output/wordcount,可以用hadoop -ls查看文件或者hadoop -cat查看内容

哈哈,至此,hadoop集群的部署已经完成,然我们享受hadoop,享受HDFS,享受mapreduce吧

你可能感兴趣的:(学习笔记)