Hadoop------Hadoop单机模式与伪分布式(CentOS7)

一.事先准备

1.jdk

①jdk的安装:

由于hadoop 不同版需要jdk版本的支持不同,所以根据自身情况选择jdk版本。

(hadoop2.6.x版本需要jdk1.6+

,hadoop2.7.x版本需要jdk1.7+

,hadoop2.8.x版本需要jdk1.8+)

rpm -qa | grep java 或者 yum list installed | grep java查看是否已经安装jdk

如果本机环境没有jdk可以尝试用  yum list | grep java来查看yum仓库中是否有提供jdk。

可指定安装需要的版本 e.g. yum install java-1.xx.x.x.x

或者可以去https://www.oracle.com/technetwork/java/javase/downloads/index.html进行下载。

现在oracle官方下载jdk比较麻烦,下载方法可以参照我的另一篇博客wget方式下载JDK

(不过还是推荐第二种方法,下载tar.gz文件,这样自己选择解压缩路径,配置环境变量比较明晰)

②JAVA环境变量配置:

由于hadoop是基于java进行开发的,所以hadoop运行时需要jvm,请确保JAVA_HOME环境变量的正确配置。

e.g. [xxxxxx@localhost ~] $ export JAVA_HOME=/xxx/xxx/java-1.8.0-openjdk

也可以在/etc/profile中添加环境变量,不过记得添加之后用 source /etc/profile重新加载。

由于此文件权限非一般用户可操作,普通用户可以在

~/.bash_profie或者~/.bashrc文件中进行添加

添加后下次启动才会生效,所以想要立即生效需要执行source ~/.bash_profile 命令

java -versionecho $JAVA_HOME命令可以用来检验配置是否成功。

2.hadoop-x.y.z.tar.gz

①可从https://hadoop.apache.org/releases.html进行下载,无图形界面的话可以用wget 进行下载,比如我下载的是hadoop-2.8.5版本:

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz

②使用tar命令进行解压缩,-C选项指定你想要展开的路径,可省略。

tar -xzvf xxx/xxx/xxx/hadoop-2.8.5.tar.gz -C /TO/SOMEWHERE-YOU-WANT/

③配置Hadoop环境变量

export HADOOP_HOME=/xxx/xxx/xxx/hadoop-2.x.x

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

(或者和上面java环境配置一样,在~/.bash_profile文件中添加)

hadoop version命令进行配置检验。 

二.伪分布式环境搭建

这里说一说自己的心得,最初接触hadoop的时候,是通过大家普遍推荐的《Hadoop- The Definitive Guide》(4th Edition)和《Hadoop in Practice》(2nd.Edition),在读这两本书的时候,也确实对什么是大数据,hadoop以及hadoop生态圈有了了解,但是对于一个刚接触大数据领域的小白来说,这两本书的环境搭建方式说的很笼统,不只是这两本书,网上搜索的很多关于hadoop环境搭建的文章数不胜数,可是都是基于旧版本的或者没说版本的,没有一个清晰统一的概念,尤其是针对端口号,随便在网上找找会出现n多个版本,这让我开始很头疼,毕竟我想尽快的上手敲一下书中的demo,这些demo也确实很吸引我。后来发现,在hadoop安装目录的share/doc/hadoop目录下有一个index.html文件,此文件正式官方提供的,环境搭建手册。(之前真是把问题想的太复杂了-_-||)如下图:

用浏览器打开之后,点击左边导航菜单的Single Node Setup↓

1.单机模式

 

mkdir input
cp etc/hadoop/*.xml input
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar grep input output 'dfs[a-z.]+'
cat output/*

Hadoop默认是非分布式模式的java进程,这样方便用来debug调试,也就是说,只要你配置好了java和hadoop环境变量,就已经是单机模式了。上面的例子,先创建一个input文件夹,之后把hadoop安装目录下的etc/hadoop文件夹下的所有内容复制到刚刚创建的input文件夹中,再运hadoop jar命令,这里我配置了环境变量所以我的命令运行如下:

hadoop jar /opt/tools/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar grep input output 'dfs[a-z.]+' 

执行结束后,会自动创建一个output文件夹,cat output/*查看运行结果。

※注:上面命令中 grep input output都是参数,而上面的grep并非grep命令(↓还是我们熟悉的java)。

2.伪分布式模式 

 伪分布式模式的搭建,这里一般建议有2g以上的内存。还是刚才的index.html,有介绍如何配置伪分布式环境。

①首先是两个配置文件etc/hadoop/core-site.xmletc/hadoop/hdfs-site.xml

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

hdfs-site.xml 

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

②配置好之后呢,要先看一下是否可以通过ssh免密连接。

ssh localhost

如果不能免密ssh连接的话运行下面的命令:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

③上述配置成功之后,先格式化namenode:(命令执行后仔细观看控制台信息,报异常会很详细的告知具体文件具体行数,比如property结束标签错误演示↓:

hdfs namonode -format

④开启NameNode守护进程,和DataNode守护进程

执行脚本文件sbin/start-dfs.sh:

此时会报找不到JAVA_HOME,但是echo $JAVA_HOME是没有问题的,在网上搜索之后得到答案,原来如果要运行分布式配置,最好在下面的文件中设置JAVA_HOME环境变量,这样其他远程节点能够正确定义java环境变量。

etc/hadoop/hadoop-env.sh

配置完成后如下:

再次执行脚本启动守护进程:

可以通过访问http://localhost:50070/检验是否配置成功。

⑤创建MapReduce作业(job)需要的HDFS文件夹

hdfs dfs -mkdir /user

hdfs dfs -mkdir /user/<username>

※此处的/user并非根目录的/user,而是HDFS的根目录。bash的ls命令是查看不到的。

⑥把input文件复制到HDFS

hdfs dfs -put etc/hadoop input

⑦ 运行刚才的那个例子:(这次速度会慢很多)

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar grep input output 'dfs[a-z.]+'

hdfs dfs -cat output/*

至此配置,测试运行就ok了,如果想停止NameNode和DataNode守护进程,执行sbin/stop-dfs.sh,不过停止状态下无法运行MapReduce作业(job)。

发布了62 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Leonardy/article/details/88987414
今日推荐