Hadoop 3.1.0 本地安装和伪分布式安装步骤和踩坑详解

一、Hadoop 安装

1.apache 官网下载hadoop tar.gz 上传到linux 服务器;

2.验证Linux 服务器是否有java环境,java -version;是否有JAVA_HOME,echo $JAVA_HOME;

3.配置Hadoop 环境变量,需要配置 hadoop目录下的 bin 和 sbin 目录

注:环境变量可在 ~/.bash_profile(只对当前用户有效 ) 或者 /etc/profile(对所有用户有效) 中配置;

HADOOP_HOME=/home/hadoop/hadoop-3.1.0

export HADOOP_HOME

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

export PATH

验证:echo $HADOOP_HOME 打印出我们所配的即可;

二、hadoop目录结构

三、hadoop的本地模式:

    特点:不具备HDFS,只能测试MapReduce 程序;

    安装:只需要修改hadoop/etc/hadoop/hadoop-env.sh 文件,在其中添加上JAVA_HOME即可

    vim hadoop/etc/hadoop/hadoop-env.sh  添加如下:

    export JAVA_HOME=***

    测试:

hadoop jar hadoop-mapreduce-examples-3.1.0.jar wordcount /home/demo/input/demo1  /home/demo/output/wc_demo1.txt

看到如下:2018-07-18 23:22:47,379 INFO mapreduce.Job:  map 100% reduce 100% 即已经运行完成,可以到/home/demo/output/wc_demo1.txt下查看:ls

cat part-r-0000 即可看到hadoop 的mapreduce  的结果。

hadoop 的mapreduce 结果默认是按照字典顺序排好序的。

四、Hadoop的伪分布式:

    特点:具备hadoop所有的功能,在单机模拟hadoop分布式环境。把nameNode,dataNode 安装在同一个节点上,还需要装一个MapReduce的运行环境yarn。需要配置如下内容:

    (1)HDFS:主节点:nameNode;数据节点:dataNode;

    (2)yarn:是一个容器,用来运行MapReduce程序;类似jsp需要运行在tomcat容器一样。yarn也有两部分:

                主节点:ReourceManager

                从节点:NodeManager

(HDFS配置)

hdfs-site.xml配置:($HADOOP_HOME/etc/hadoop/hdfs-site.xml 中的confirgation 标签中)

<!--配置HDFS的冗余度,默认是3,这里配成1 -->

<property>

    <name>dfs.replication</name>

    <value>1</value>

</property>

<!--配置是否检查权限 -->

<property>

    <name>dfs.permissions</name>

    <value>false</value>

</property>

core-site.xml配置:($HADOOP_HOME/etc/hadoop/core-site.xml中的confirgation 标签中)

<!--配置HDFS的主节点,nameNode -->

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://10.0.0.180:9000</value>

</property>

<!--配置dataNode保存数据的位置 -->

<property>

    <name>hadoop.tmp.dir</name>

    <value>/hadoop/dataNode_1_dir</value>

</property>

(yarn配置)

mapred-site.xml配置:($HADOOP_HOME/etc/hadoop/mapred-site.xml中的confirgation标签中)

<!--配置MapReduce运行的框架 -->

<property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

</property>

yarn-site.xml配置:($HADOOP_HOME/etc/hadoop/yarn-site.xml中的confirgation标签中)

<!--配置ReourceManager的地址-->

<property>

    <name>yarn.resourcemanager.hostname</name>

    <value>10.0.0.180</value>

</property>

<!--配置NodeManager执行任务的方式:shuffle:洗牌 -->

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

</property>

至此,配置完毕,但是还不能启动,要对hdfs先进行格式化。类似以前的软盘,使用前要先格式化;

执行命令:hdfs namenode -format

看到日志信息:即格式化成功。

启动:

    start-all.sh 会启动两部分,

        1)启动HDFS 存储数据

        2)启动yarn 执行计算

        启动后,命令行 jps 出现:

说明Hadoop伪分布式已经启动成功了

访问:

        1)命令行方式;

        2)java api 访问;

        3)web 浏览器;

踩坑过程:

1.hadoop 无法启动,报nameNode 没有配置用户名

解决措施:首先将linux服务器设置免密登陆(不懂的可以百度)

生成密钥、复制、修改权限
    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    $ chmod 0600 ~/.ssh/authorized_keys
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

发现还是不能启动,但是错误不一样了,大概是当前用户名是centos7 而我设置的localhost;

修改hostname:注意hostname有两个位置

# hostnamectl set-hostname host-name 
# hostnamectl --static set-hostname host-name

修改后,终于可以启动了。但是访问50070端口,访问不了。

百度一堆解决这个问题的,什么关闭防火墙啊,验证配置文件啊,都不好用。最后查看了下服务器启动的端口

关闭防火墙一个一个的试吧,最后终于找到了HDFS nameNode 的登陆端口,竟然是9870,吐血。浏览器访问,10.0.0.180:9870 成功!

最后感谢【腾讯视频】赵强老师分享的Hadoop视频,讲的很好,很细致,看了很受教!

猜你喜欢

转载自blog.csdn.net/yao389400/article/details/81114397
今日推荐