hadoop伪分布式(单机版)安装,Linux

时间:2021-02-25 04:52:51

一、下载

1、hadoop官网下载:https://archive.apache.org/dist/hadoop/common/

进入stable文件夹里下载,这是稳定版本。

hadoop伪分布式(单机版)安装,Linuxstable/ 
本文的版本是 hadoop-2.7.2.tar.gz 

2、jdk下载,JDK7及以上,本文用jdk8-64位

二、版本区别

2.5之前的版本,hadoop官网提供的都是32位编译的安装包。我们环境都是Linux64位的,需要用64位机子重新编译。 从2.5版本起,hadoop提供的都是64位编译的安装包,32位用不了。64位hadoop需要64位JDK7.0及以上和64位Linux。
-------在已安装了Linux 64位,下载了JDK8x64,HADOOPx64的环境下开始-------

三、添加用户hadoop

1、添加用户 首先以root登录Linux。用adduser命令添加一个普通用户,命令如下:
#adduser hadoop//添加一个名为hadoop的用户,该用户随意取
#passwd hadoop //修改密码
Changing password for user hadoop.
New UNIX password: //在这里输入新密码
Retype new UNIX password: //再次输入新密码
passwd: all authentication tokens updated successfully.

2、赋予hadoop,root权限
方法一: 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL

然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root hadoop
修改完毕,用hadoop帐号登录,用命令 sudo ,即可获得root权限进行操作。
--------------------------------------
方法二:
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
hadoopALL=(ALL)     ALL

修改完毕,用hadoop帐号登录,用命令 sudo ,即可获得root权限进行操作。

四、修改主机名

hadoop登录
  sudo vim /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=hello110    ###

  sudo hostname hello110 让修改生效,无需重启。

(修改了/etc/sysconfig/network必须重启才生效。hostname hello110是只对当前状态有效,一旦重新启动虚拟机,主机名未变。

五、修改主机名和IP的映射关系

        vim /etc/hosts

192.168.255.128(本机linuxIP地址)    hello110

六、关闭防火墙

#查看防火墙状态
        service iptables status
        #关闭防火墙
        service iptables stop
        #查看防火墙开机启动状态
        chkconfig iptables --list
        #关闭防火墙开机启动
        chkconfig iptables off

hadoop是公司内部使用,在公司内部网络,不与外网通,所以直接关掉防火墙好了,省的一个个去关闭hadoop的端口。

七、安装JDK

1、上传jdk安装包

alt+p 后出现sftp窗口,然后命令:put  windows上jdk安装包的路径\jdk安装包全名。上传到执行命令时hadoop用户所在的文件下。

2、解压jdk         #创建文件夹         mkdir /home/hadoop/app         #解压         tar -zxvf  jdk-8u73-linux-x64.tar.gz -C /home/hadoop/app
3、将java添加到环境变量中        sudo vim /etc/profile        #在文件最后添加        export JAVA_HOME=/home/hadoop/app/jdk-8u73        export PATH=$PATH:$JAVA_HOME/bin
4、 刷新配置        source /etc/profile

八、安装hadoop

1、上传hadoop

tar -zxvf hadoop的压缩包 -C /home/hadoop/app

2、配置hadoop

hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop需要修改5个配置文件
    第一个:hadoop-env.sh        vim hadoop-env.sh        #第27行        export JAVA_HOME=/usr/java/jdk1.7.0_65
# The java implementation to use.#export JAVA_HOME=${JAVA_HOME} sometime can not get.zengmg 这个${JAVA_HOME}有时候会拿不到,所以配置成固定的export JAVA_HOME=/home/hadoop/app/jdk1.8.0_73/
不要配置成 /home/hadoop/app/jdk1.8.0_73/bin 了----------------------------------------------------------------------------    第二个:core-site.xml
        <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->        <property>            <name>fs.defaultFS</name>            <value>hdfs://hello110:9000/</value></property>
这里最后的/ 可有可无,但是最好有。<!-- 指定hadoop运行时产生文件的存储目录hadoop公共进程在运行的时候会产生一些数据,这些数据需要目录来存放。我们可以笼统地配置一个,让Namenote,Datanote自己去在这个文件夹下建子文件夹但是生产上Namenote单独对一个目录,Datanote单独对一个目录,而且这个目录是单独磁盘挂载点,方便扩容 -->            <property>            <name>hadoop.tmp.dir</name>            <value>/home/hadoop/hadoop-2.4.1/tmp</value>           <!--这里的tmp文件要手动创建,并且赋予全部权限  chmod 777  文件名该文件用于保存NameNode的数据-->    </property>---------------------------------------------------------------------------------------------------    第三个:hdfs-site.xml   hdfs-default.xml         <!-- 指定HDFS副本的数量 -->        <property>            <name>dfs.replication</name>            <value>1</value>        </property>群集时一般配置3个最合适。如果只有一台机子,配置1吧,多了无益,而且会报错。
-------------------------------------------------------------------------------------------------    第四个:mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)        mv mapred-site.xml.template mapred-site.xml   修改文件名
        vim mapred-site.xml        <!-- 指定mr运行在yarn上 -->        <property>            <name>mapreduce.framework.name</name>            <value>yarn</value>    </property>---------------------------------------------------------------------------------------------------    第五个:yarn-site.xml        <!-- 指定YARN的老大(ResourceManager)的地址 -->        <property>            <name>yarn.resourcemanager.hostname</name>            <value>hello110</value>    </property>        <!-- reducer获取数据的方式 -->    <property>            <name>yarn.nodemanager.aux-services</name>            <value>mapreduce_shuffle</value>     </property>---------------------------------------------------------------------------------------------------------------------------------
3、将hadoop添加到环境变量
    vim /etc/proflie        export JAVA_HOME=/usr/java/jdk1.7.0_65        export HADOOP_HOME=/home/hadoop/hadoop-2.4.1/        export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
:$HADOOP_HOME/bin 是 hadoop 的一些常用脚本
:$HADOOP_HOME/sbin  是启动关闭hadoop的一些脚本
    source /etc/profile

九、启动hadoop


    1、格式化namenode(是对namenode进行初始化)        hdfs namenode -format (  hadoop namenode -format  )
    2、启动hadoop        先启动HDFS        sbin/start-dfs.sh
    3、再启动YARN        sbin/start-yarn.sh

十、验证是否启动成功


        使用jps命令验证
        27408 NameNode        28218 Jps        27643 SecondaryNameNode        28066 NodeManager        27803 ResourceManager        27512 DataNode -------------第一次的时候用的是2.4.1版本非稳定版,我jdk用了64位的jdk8。hadoop2.4.1的时候是32位的,导致不能启动 datanode,后来下载了最新稳定版hadoop2.7.1,解决了。

十一、上传文件测试


        http://192.168.255.128:50070 (HDFS管理界面)        http://192.168.255.128:8088 (MR管理界面)
体验:将jdk压缩包上传到hadoop里面,命令如下hadoop fs -put jdk.......  hdfs://hello110:9000 错误的命令报错:-put: Pathname  from hdfs://hello110:9000 is not a valid DFS filename.
正确的命令:hadoop fs -put jdk.......  hdfs://hello110:9000/     最后的/ 不能少啊,报错的原因是,无法访问说,网络连接不上说,让我折腾了好久说