您现在的位置是:首页 > 数据库 > 大数据

大数据学习第(1)话-安装Hadoop

yuyong2019-01-31大数据

简介大数据学习第(1)话-安装Hadoop;
大数据的解决了两个问题,一个是存储(分布式存储),另一个是计算(分布式计算);
Hadoop就是Apache基金会所开发的分布式系统基础架构。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

安装环境:

系统:CentOS7 X64

内存:2G

网络连接方式:NAT

一、jdk的安装;

参考本站中的文章:Linux下安装Java环境(图文)


二、安装Hadoop

1.下载安装包

打开官网选择一个版本,点击“binary”,复制下载链接,到服务器中使用wget命令进行下载;

image.png

wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz


2.解压安装包并配置环境变量

#将hadoop安装包解压到/opt/software目录下
tar -zxvf /opt/software/hadoop-3.1.2.tar.gz

#移动Hadoop目录到上一层目录/opt下
mv  /opt/software/hadoop-3.1.2  /opt
cd  /opt

#为hadoop的目录创建一个软连接
ln  -s  hadoop-3.1.2 hadoop

#配置环境变量
vi /etc/profile

在JAVA_HOME下面一行增加一行“HADOOP_HOME=/opt/hadoop

在PATH后面增加内容“:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


保存profile文件并使之生效

source /etc/profile

    

image.png

  

验证环境变量是否配置正确

hadoop version   #能正确显示hadoop的版本,即表示配置正确

image.png


3.配置Hadoop

3.1.本地模式

nothing..(没有看错,是这样的,安装好后就是本地模式);hdfs在本地模式下,就是系统的文件系统;使用"hdfs dfs -ls /"查看根目录的系统文件;本地模式一般在开发和测试期间使用,方便调试;

3.2.伪分布模式(与完全分布式是一样的,只不过伪分布是一台机器)

#创建Hadoop本地存储临时数据的目录
mkdir -p /opt/hadoop/data/tmp

#创建Hadoop本地存储namenode和datanode数据的目录
mkdir -p /opt/hadoop/data/namenode
mkdir -p /opt/hadoop/data/datanode


#进入到hadoop目录下的etc目录
cd  $HADOOP_HOME/etc

#修改hadoop目录的名字为pesudo
mv  hadoop  pesudo

#为pesudo目录创建一个软连接hadoop
ln  -s  pesudo  hadoop

#进入到 hadoop 的配置文件目录
cd $HADOOP_HOME/etc/hadoop

#编辑 core-site.xml 文件
vi core-site.xml

#编辑 hdfs-site.xml 文件
vi hdfs-site.xml

#编辑 mapred-site.xml 文件
vi mapred-site.xml

#编辑 yarn-site.xml 文件
vi yarn-site.xml

#编辑 hadoop-env.sh 文件 在文件中添加 "export JAVA_HOME=/opt/jdk"
vi  hadoop-env.sh

 

core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- HDFS资源路径 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoopsrv1</value>
  </property>
  <!-- Hadoop临时文件存放目录 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop/data/tmp</value>
  </property>
</configuration>

 

hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- 副本数 -->
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <!-- namenode元数据存储路径 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/opt/hadoop/data/namenode</value>
  </property>
  <!-- 数据存储路径 -->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/opt/hadoop/data/datanode</value>
  </property>
</configuration>

 

mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- mapreduce运行在yarn上面 -->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
  </property>
</configuration>

 

yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- resourceManager所在主机 -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoopsrv1</value>
  </property>
  <!-- 在nodemanager中运行mapreduce服务 -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <!-- 指定map的内存大小 -->
  <property>
    <name>mapreduce.map.memory.mb</name>
    <value>1024</value>
  </property>
  <property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx1024M</value>
  </property>
  <!-- 指定reduce task的内存大小,一般地,reduce设置为map的两倍 -->
  <property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>2048</value>
  </property>
  <property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx2048M</value>
  </property>
  <!-- 任务每使用1MB物理内存,最多可使用虚拟内存量,默认2.1 -->
  <property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>3</value>
  </property>
</configuration>


配置ssh

#检查ssh相关软件包是否已经安装(openssh、openssh-clients、openssh-server)
yum list installed | grep ssh

#检查sshd是否已经运行
ps -ef | grep sshd

#生成一对秘钥 -t:加密类型  -P:设置空为无密码登录  -f:指定生成的目录及位置
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

#或直接使用一下命令,遇到需要交互时直接回车
ssh-keygen

#将公钥追加到"authorized_keys"文件中
cat ~/.ssh/id_rsa.pub >> authorized_keys

#验证ssh是否配置成功,第一次需要输入yes,然后回车
ssh localhost

如下图所示则表示ssh相关软件包已安装

image.png

如下图所示则表示sshd正在运行

image.png

如下图所示则表示ssh配置成功

image.png


注:若配置文件中没有指定hadoop运行时产生文件的位置,则默认产生的文件位置为:/tmp

初始化hadoop并启动各项服务

#格式化hdfs文件系统   在"/tmp"目录中产生"hsperfdata_root"目录和"hadoop-root-namenode.pid"文件
#第一次初始化时需要执行此命令,后续则不需要执行,如需再次执行,需要删除"/opt/hadoop/data/tmp"目录中的文件或者"/tmp"中的文件
hdfs namenode -format

#分别启动各个服务
#启动namenode   在"/tmp"目录中产生"jetty-0.0.0.0-9870-hdfs-_-any-7467743047318667804.dir"目录
hdfs --daemon start namenode

#启动datanode   在"/tmp"目录中产生"jetty-localhost-45044-datanode-_-any-3932401089969313253.dir"目录和"hadoop-root-datanode.pid"文件
hdfs --daemon start datanode

#启动secondarynamenode   在"/tmp"目录中产生"jetty-0.0.0.0-9868-secondary-_-any-1321427722959667126.dir"目录和"hadoop-root-secondarynamenode.pid"文件
hdfs --daemon start secondarynamenode

#启动resourcemanager   在"/tmp"目录中产生"jetty-hadoopsrv1-8088-cluster-_-any-6250971201413853361.dir"目录和"hadoop-root-resourcemanager.pid"文件
yarn --daemon start resourcemanager

#启动nodemanager    在"/tmp"目录中产生"jetty-0.0.0.0-8042-node-_-any-6743753271798141492.dir"目录和"hadoop-root-nodemanager.pid"文件
yarn --daemon start nodemanager

#检查服务是否都启动了,如下图所示,hadoop的伪分布模式便安装启动完成
jps


image.png

/tmp 目录下的文件

image.png


/opt/hadoop/data/tmp 目录下的文件

image.png


或者使用start-dfs.shstop-dfs.sh来启停namenodes、datanodes、secondary namenodes服务(在"/opt/hadoop/sbin"目录下),在调用命令前,需要在文件的开头,也就是"#!/usr/bin/env bash"这一行下面添加以下内容

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

同理,也可使用start-yarn.sh和stop-yarn.sh来启停resourcemanager、nodemanagers服务,在调用命令前,需要在文件的开头,也就是"#!/usr/bin/env bash"这一行下面添加以下内容

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

修改完以上四个文件,最后也可以使用start-all.shstop-all.sh来启停所有的服务(不推荐)


初体验

此时可以访问namenode的web服务:http://hadoopsrv1:9870,查看namenode健康状况,可以观察到有一个存活的datanode节点。

image.png


访问Yarn的web页面 http://hadoopsrv1:8088

image.png

注:若页面均无法访问,检查yarn是否正常启动,使用netstat命令检查端口是否正在运行,检查防火墙是否关闭或者放行对应端口

image.png

若IP端口为 127.0.0.1:8088则需要修改服务器配置

vim /etc/hosts

image.png


执行一个MapReduce任务

# 在分布式文件系统中创建用户目录
hdfs dfs -mkdir -p /user/root
 
# 拷贝数据到分布式文件系统中
hdfs dfs -mkdir input
hdfs dfs -put /opt/hadoop/etc/hadoop/*.xml input
 
# 运行hadoop提供的mapreduce任务
hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar grep input output 'dfs[a-z.]+'
 
# 拷贝任务执行结果到本地文件系统中
hdfs dfs -get output output
cat output/*
 
# 或直接从分布式文件系统中查看计算结果
hdfs dfs -cat output/*

image.png


image.png

3.3.完全分布模式

很赞哦! ()

文章排行

本栏推荐

栏目更新