linux下hadoop安装

linux下hadoop安装

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算

准备

  • jdk安装

    [jdes@wangjing jdes]$ java -version
    java version "1.8.0_121"
    Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
    
  • hadoop下载

    hadoop安装地址

    [jdes@wangjing jdes]$ cd /home/jdes/
    下载
    [jdes@wangjing jdes]$ tar zxvf hadoop-2.7.1.tar.gz #解压
    

配置hadoop环境变量

编辑profile

[jdes@wangjing jdes]$ vim /etc/profile

在最下面配置环境变量

export HADOOP_HOME=/home/jdes/hadoop-2.7.1
export PATH=$HADOOP_HOME/bin:$PATH

配置核心组件文件

Hadhoop核心文件core-site.xml

[jdes@wangjing jdes]$ cd hadoop-2.7.1/etc/hadoop/
[jdes@wangjing hadoop]$ ls
capacity-scheduler.xml      httpfs-env.sh            mapred-env.sh
configuration.xsl           httpfs-log4j.properties  mapred-queues.xml.template
container-executor.cfg      httpfs-signature.secret  mapred-site.xml.template
core-site.xml               httpfs-site.xml          slaves
hadoop-env.cmd              kms-acls.xml             ssl-client.xml.example
hadoop-env.sh               kms-env.sh               ssl-server.xml.example
hadoop-metrics2.properties  kms-log4j.properties     yarn-env.cmd
hadoop-metrics.properties   kms-site.xml             yarn-env.sh
hadoop-policy.xml           log4j.properties         yarn-site.xml
hdfs-site.xml               mapred-env.cmd
[jdes@wangjing hadoop]$ vim core-site.xml

在configruation中加入

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
</property>
<property>                
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop/hadoopdata</value>
</property>

配置HDFS

Hadoop的HDFS是文件系统,配置文件hdfs-site.xml

[jdes@wangjing hadoop]$ vim hdfs-site.xml

在configruation中加入

<property>
		<name>dfs.replication</name>
		<value>1</value>
</property>

配置站点文件

Hadoop的站点配置是yarn-site.xml

[jdes@wangjing hadoop]$ vim yarn-site.xml

在configruation中加入

<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.resourcemanager.address</name>
	<value>localhost:18040</value>
</property>
<property>
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>localhost:18030</value>
</property>
<property>
	<name>yarn.resourcemanager.resource-tracker.address</name>
	<value>localhost:18025</value>
</property>
<property>
	<name>yarn.resourcemanager.admin.address</name>
	<value>localhost:18141</value>
</property>
<property>
	<name>yarn.resourcemanager.webapp.address</name>
	<value>localhost:18088</value>
</property>

配置MapReduce

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算

配置文件为mapred-site.xml

**注意:**这里要修改一下mapred-site.xml.template重命名为 mapred-site.xml

[jdes@wangjing hadoop]$ mv mapred-site.xml.template mapred-site.xml
[jdes@wangjing hadoop]$ vim mapred-site.xml

在configruation中加入

<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

格式化文件系统

[jdes@wangjing hadoop]$ cd /home/jdes/hadoop-2.7.1/sbin/
[jdes@wangjing sbin]$ hadoop namenode -format

启动

执行启动文件 start-all.sh 每一步都要输入一遍对应ip的密码,我们这里是单机部署,直接都输入本机密码就行

[jdes@wangjing sbin]$ ./start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [localhost]
root@localhost's password: 
localhost: starting namenode, logging to /home/jdes/hadoop-2.7.1/logs/hadoop-root-namenode-wangjing.out
root@localhost's password: 
localhost: starting datanode, logging to /home/jdes/hadoop-2.7.1/logs/hadoop-root-datanode-wangjing.out
Starting secondary namenodes [0.0.0.0]
[email protected]'s password: 
0.0.0.0: starting secondarynamenode, logging to /home/jdes/hadoop-2.7.1/logs/hadoop-root-secondarynamenode-wangjing.out
starting yarn daemons
starting resourcemanager, logging to /home/jdes/hadoop-2.7.1/logs/yarn-root-resourcemanager-wangjing.out
root@localhost's password: 
localhost: starting nodemanager, logging to /home/jdes/hadoop-2.7.1/logs/yarn-root-nodemanager-wangjing.out

检查程序是否运行成功

[jdes@wangjing sbin]$ jps #查看java进程
3841 DataNode         
4002 SecondaryNameNode
3715 NameNode
4148 ResourceManager
4436 NodeManager

以上5个都启动成功就完成启动了

最后访问localhost:50070

在这里插入图片描述

启动成功!!!

补充

可能出现的问题:

  • linux安装Hadoop出现找不到java环境变量

    在安装启动hadoop时候遇到了找不到java环境变量的,但是我执行java -version时候返回了jdk信息,说明环境变量配置了

    [jdes@wangjing ~]$ java -version
    java version "1.8.0_121"
    Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
    

    然后我执行env也发现了java的环境变量

    [jdes@wangjing sbin]$ env
    JAVA_HOME=/usr/java/jdk1.8.0_121
    S_COLORS=auto
    CLASSPATH=.:/usr/java/jdk1.8.0_121/lib/dt.jar:/usr/java/jdk1.8.0_121/lib/tools.jar
    XDG_SESSION_ID=7
    USER=root
    PWD=/home/jdes/hadoop-2.7.1/sbin
    HOME=/root
    PATH=.:/usr/java/jdk1.8.0_121/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    

    然后我启动hadoop他还是爆出找不到javahome

    [jdes@wangjing sbin]$ ./start-dfs.sh 
    Error: JAVA_HOME is not set and could not be found.
    

    于是我去了解了下情况

    网上说修改profile文件或者是.bash_profile或者.bashcr文件,修改前两者刷新

    [jdes@wangjing etc]$ source profile
    [jdes@wangjing ~]$ source .bash_profile
    

    启动还是找不到javahome

    但是我修改.bashcr并刷新之后能启动成功了

    因为(下面这段话引用别人的)

    .bashrc文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般 来说都会在.bash_profile里调用.bashrc脚本以便统一配置用户环境

    所以报出找不到javahome的原因应该就是启动文件start-dfs.sh 中调用了另一个bash shell导致环境变量读取位置发生改变从而读取失败

    详细了解这三个文件参考这篇博客:

    Linux中profile、bashrc、bash_profile之间的区别和联系

    注意:

    • .bashcr和.bash_profile都在用户当前用户文件夹下也就是’~'下
    • 上文中说的修改就是添加环境变量
    export JAVA_HOME=/usr/java/jdk1.8.0_121
    export PATH=.:$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
  • 端口号被占用

    启动的时候可能出现端口号被占用

    执行命令关闭端口(端口号举例)

    [jdes@wangjing ~]$ netstat -anp |grep 3039  #查看端口号是否被占用
    [jdes@wangjing ~]$ kill -9 3039  #直接杀掉进程重新启动就好
    
  • 最后如果你用的阿里云服务器记得要开安全组的端口号

  • 如果用的虚拟机请自己关防火墙

最后分享下我的安全组

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44769485/article/details/114270920
今日推荐