记录下,也许能为有需要的人带来帮助
本次记录一下Hadoop基本环境的搭建
不废话
首先,我是在window10环境下,下载了ubuntukylin-17.04 64位版本的镜像,然后在VMware 中安装虚拟机(虚拟机如何安装,网上一堆教程,这里不过多介绍)。安装完成后大概是这样子。每个人的虚拟机版本可能都不一样,但是安装教程一样的
ctrl+alt+t 可以调出linux命令行窗口
创建用户
为了方便管理,我选择创建一个新的用户来专门管理hadoop,当然,这不是必须的,不想创建的可以直接跳过这一步
创建一个名为hadoop的可登录用户,并且选择bash这种shell 类型
$ sudo useradd -m hadoop -s /bin/bash
设置登录密码为123456
$ sudo passwd 123456
为hadoop用户分配权限,这里直接给了管理员的权限
$ sudo adduser hadoop sudo
注销即可选择hadoop用户登录
下载基本工具
下载之前,我们先更新一下apt
$ sudo apt-get update
这里我选择gedit,先试着安装下gedit,gedit一般系统自带的
$ sudo apt-get install gedit
当然,习惯使用vim的也可以按照vim,直接把上面命令的gedit换成vim即可
安装SSH并配置SSH
SSH很关键,单点,集群都需要用到SSH登录,Ubuntu系统自带了SSH Client,因此,我们只需要安装SSH Server即可
$ sudo apt-get install openssh-server
如果提示找不到,可以换个命令
$ sudo apt-get install ssh
ssh安装完成以后,先看看能否启动:
$ sudo /etc/init.d/ssh start
查看是否启动正确
$ ps -e | grep ssh
下面我们设置ssh为免密码登录,避免以后通讯过程中带来麻烦
$ ssh-keygen -t rsa -P ""
追加一下公钥
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
试下登录localhost
$ ssh localhost
exit后再次登录,完美
继续
安装JDK
JDK目前很多新版本,但是,先别默认安装。按http://wiki.apache.org/hadoop/HadoopJavaVersions中说的
hadoop 2.7以上的需要JDK7, 低于2.7版本的支持JDK6
看了hadoop目前的版本,我选择了2.8.0版本
因此,我得下载一个7版本的JDK
很奇怪,我这个虚拟机版本,命令行apt-get已经找不到7版本的jdk,因此,我选择了手动安装。带上一个下载链接:http://www.oracle.com/technetwork/java/javase/archive-139210.html
选择 Java SE 7 下载即可
默认下载到Downloads文件夹,命令行默认安装的jdk是在 /usr/lib/jvm 路径下,为了方便管理,我们把下载的解压到该目录下
$ cd Downloads
$ sudo tar -zxf jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm
接着,我们需要配置一下JDK的系统路径信息
$ sudo gedit ~/.bashrc
在文件的开头设置一下JAVA_HOME
让设置生效
$ source ~/.bashrc
然后也在profile 中设置一下
$ sudo gedit /etc/profile
让设置生效
$ source /etc/profile
然后
$ java -version
JDK安装完毕
继续
安装Hadoop
可以同过在https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 下载一个最新的稳定版本,这个我选择2.8.0版本(hadoop-2.8.0.tar.gz)。当然,较好的方式是自己编译hadoop的源码,这里,我们选择最简单的方式,编译源码,有兴趣的可以去自己了解下
下载完毕后,我们把Hadoop安装到 /usr/loca/ 路径下
$ sudo tar -zxf ~/Downloads/hadoop-2.8.0.tar.gz -C /usr/local
$ cd /usr/local
重命名一下hadoop的文件夹
$ sudo mv ./hadoop-2.8.0/ ./hadoop
修改hadoop的文件夹权限
$ sudo chmod -R 777 ./hadoop.
ps: 接下来所有的新创建的文件夹,权限问题都是这样解决
查看hadoop版本
$ cd /usr/local/hadoop/bin
$ hadoop version
版本显示正常后,我们需要把hadoop写入系统环境变量
修改/etc/profile 文件
$ sudo gedit /etc/profile
export HADOOP_HOME 和在 path上加入HADOOP_HOME
结合上面的JDK配置,如下
写完后记得检查一遍,防止错误
继续
Hadoop 默认配置(单机模式)
hadoop默认带了许多例子,下面我们就来运行一个看下
这里,我们想计算一下input文件夹所有文件的内容中,符合正则表达式a[a-z.]+的单词多出现的次数,最后把结果保存到output文件夹中
$ cd /usr/local/hadoop
创建一个input文件夹
$ mkdir ./input
把/etc/hadoop/路径下的所有文件复制到input文件夹中
$ cp ./etc/hadoop/*.xml ./input
运行hadoop
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'ab[a-z.]+'
查看结果
$ cat ./output/*
继续
Hadoop 伪分布式配置
hadoop可以在单节点上以伪分布式的方式运行,节点既可以作为NameNode,也可以作为DataNode。同时读HDFS中文件。接下来我们需要修改一下配置文件。新版本的hadoop配置文件在 /hadoop/etc/hadoop/ 路径下,旧版本的配置文件在/hadoop/conf/ 路径下
首先在hadoop目录下新建tmp文件夹
$ mkdir tmp
进入/etc/hadoop/ 目录
$ cd /etc/hadoop
修改core-site.xml文件
$ sudo gedit core-site.xml
加入配置
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改hdfs-site.xml文件
首先在tmp目录下新建dfs文件夹
$ cd tmp
$ mkdir dfs
接着在dfs目录下新建name文件夹,data文件夹,用于分别存放namenode,datanode 文件
$ cd dfs
$ mkdir name
$ mkdir data
接着配置 hdfs-site.xml 文件
<configuration>
<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>
如下
$ sudo gedit hdfs-site.xml
配置解释
Hadoop运行时会读取配置文件。伪分布式模式官网里说只需配置js.defaultFS 和 dfs.replication。 不过我们还是需要配置hadoop.tmp.dir参数。如果不配置的话,hadoop会使用默认的临时目录 /tmp/hadoo-hadoop。 这个目录在重启的时候有可能会给删掉,导致必须重新格式化hadoop。因此,我们手动指定了目录
配置完成后,我们对NameNode进行格式化操作
$ cd bin
$ hdfs namenode -format
开启所有的服务
$ ./sbin/start-dfs.sh
见证奇迹的时刻
$ jps
访问下localhost:50070
PS: 配置了伪分布式模式后,单机模式中的例子无法正常运行。会提示找不到input文件夹,是因为伪分布式模式,hadoop会读取hdfs中的文件,我们还没有把input put进hdfs,所以。当然,如果还想运行单机模式,我们可以把伪分布式模式的配置文件的配置去掉即可。还有第二次运行单机模式的时候,我们需要把output 文件夹删掉再运行,因为hadoop不会自动覆盖output文件夹
配置的过程中,可能每个人的机器有所差异,可能还是会遇到一些问题。例如文件夹的权限呀,JDK的环境变量路径配置有误,配置文件少一个符号或字母等等等。看下命令行的日志,及时解决吧····
这就是Hadoop基本环境的搭建,不敢写了(下一篇再写),能坚持看到这里的人已经很有毅力了,下一篇我会继续写如何在伪分布式模式下运行例子,并且介绍一下YARN的配置