hadoop搭建问题

Hadoop平台搭建过程及问题解决
使用VM:
在这里插入图片描述
文件:
在这里插入图片描述

注:hadoop不能下载-src版本的:得编译,不能直接用,非-src的改配置文件就可以直接用。 CentOS自带的JDK不能用,得下载oracle的。

下载链接:
http://ftp.agdsn.de/pub/mirrors/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

https://archive.apache.org/dist/hadoop/common/hadoop-3.0.0/hadoop-3.0.0.tar.gz

https://download.oracle.com/otn/java/jdk/8u202b08/1961070e4c9b4e26a04e7f5a083f551e/jdk-8u202-linuxx64.tar.gz?AuthParam=1558703583_9fca1e8a9bd7e9a2d254673e2a1576c9

1.创建三台虚拟机 hd-master、hd-node1、hd-node2 三台虚拟机服务器中的主机名(hostname)分别更改为master、node1、node2。
命令如下:
cd /etc/ // 进入配置目录
vi hostname // 编辑hostname 配置文件
(这个直接运行不成功,权限不够。在终端输入:su。进入超级用户模式,输入sudo vi /etc/hostname进行编辑主机名)
尽量用root账号登录可以避免这些麻烦
在这里插入图片描述
先点击 Esc 然后输 :wq 保存
在另外两个节点上进行相同的操作
在这里插入图片描述在这里插入图片描述
注意:登录虚拟机的时候使用root账号登录,这样可以避免权限的麻烦

2.查看三台虚拟机的IP地址(我这里是用DHCP的,没有静态设置)。我的是:
192.168.233.128 master
192.168.233.129 node1
192.168.233.130 node2

3.配置hosts:
hosts文件是域名解析文件,在hosts文件内配置了 ip地址和主机名的对应关系,配置之后,通过主机名,电脑就可以定位到相应的ip地址 。
命令:vi /etc/hosts
三台虚拟机上,都改为:(进去按i就可以编辑,编辑完按esc,输入:wq保存退出,以后编辑的步骤都是如此)
在这里插入图片描述

4.ssh 免密登录
ssh-keygen
回车到最后

输入以下命令将公钥复制到node1和node2节点:
ssh-copy-id root@node1
ssh-copy-id root@localhost
ssh-copy-id root@node2

输入命令ssh node1或ssh node2测试一下能不能免密登录

5.安装JDK,JDK是安装hadoop所需要的基本环境,CentOS自带的JDK不能用,得下载oracle的。
先把CentOS自带的open jdk删了:
如下所示:
rpm查询java安装包名称
[root@localhost java]# rpm -qa | grep java
java-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64
tzdata-java-2014b-1.el7.noarch
python-javapackages-3.4.1-5.el7.noarch
java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64
javapackages-tools-3.4.1-5.el7.noarch
保留.noarch的,其他的jdk就删除掉,用以下语句依次删除:
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64
总之就是将所有rpm查询出的非.norch的jdk删掉。
然后创建一个自己的文件夹bigdata,将jdk和hadoop的安装包解压进去,
在这里插入图片描述
在这里插入图片描述
可以随便解压到哪,通过:
mv jdk1.8.0_202/ bigdata/移动到bigdata里
配置环境变量的过程放在最后和hadoop的环境变量一起配置

6.安装Hadoop:
同样的操作,将hadoop的压缩包解压到bigdata里,同上。
接下来我们要配置环境变量,环境变量是让系统变量,在环境变量配置的命令目录后,该目录的命令将可以在任何位置都可以使用。
输入:
vi /etc/profile
然后再里面添加:Java和hadoop的环境变量
在这里插入图片描述

export JAVA_HOME=/home/master/bigdata/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH

export HADOOP_HOME=/home/master/bigdata/hadoop-3.0.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_HDFS_HOME=/home/master/bigdata/hadoop-3.0.0
export HADOOP_CONF_DIR=/home/master/bigdata/hadoop-3.0.0/etc/Hadoop

里面具体的路径按照你自己创建文件的路径来,看你把hadoop和java放哪了

保存退出后,输入:source profile 这样才能起作用。
检查是否配置成功,输入:
java -version
hadoop version 看两个的环境有没有配置成功。如:
在这里插入图片描述
在这里插入图片描述
至此,基本的安装步骤就完成了,但是还需要配置hadoop才能使用,但是可能会遇到小问题,大家慢慢度娘都能解决。

7.配置hadoop:修改对里的配置
这几个表必须配置对,要不然会出各种错误。把每个配置表里路径按自己的情况改了,照猫画虎就行。
(1) vi hadoop-env.sh

在这里插入图片描述

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root

export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

export JAVA_HOME=/home/master/bigdata/jdk1.8.0_202

(2) vi core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9001</value>
        </property>
<property>
    <name>hadoop.temp.dir</name>
    <value>/home/master/bigdata/tmp</value>
 </property>
</configuration>

(3) vi hdfs-site.xml
在目录下新建tmp
在这里插入图片描述

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


    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/master/bigdata/tmp/dfs/name</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/master/bigdata/tmp/dfs/data</value>
    </property>
</configuration>

(4) vi yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
   </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
      </property>
<property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>49152</value>
</property>
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>49152</value>
</property>

</configuration>

(5) vi mapred-site.xml

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

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

</configuration>

(6) vi workers
此处因为前面配置了hosts,所以此处可以直接写主机名,如果没有配置,必须输入相应主机的ip地址。配置的workers,hadoop会把配置在这里的主机当作datanode。

在这里插入图片描述

8.分发安装包到其它两个节点:
scp -r * node1:/home/master/
scp -r * node2:/home/master/
我这么传输的文件会很多,不太好,当时没注意,不过可以成功就行。

9.验证Hadoop是否搭建成功:
输入命令:
start-all.sh //开启hadoop
看有没有报错信息
我遇到了:hadoop启动时WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.错误。

解决方案:在$ vi sbin/start-dfs.sh
$ vi sbin/stop-dfs.sh添加(都要加):

HDFS_DATANODE_USER=root  
HDFS_DATANODE_SECURE_USER=hdfs  
HDFS_NAMENODE_USER=root  
HDFS_SECONDARYNAMENODE_USER=root 

验证方法两个:
(1) 输入jps查看角色服务:
正常在master上应该有NameNode等:
在这里插入图片描述
在node1和node2上应该有如:
在这里插入图片描述
符合上述情况基本上就是成功了。
(2) 使用Hadoop自带的wordcount程序来判断:
自己造一个texs.txt来测试,我放到了/home/下,只要把路径记住就行。
新建.txt文本可以用命令:touch。编辑用vi编辑保存就行。

运行前要输入:start-all.sh
确保已经启动了Hadoop集群

严格按如下设置:
hadoop fs -ls / //查看hdfs上的目录
hadoop fs -mkdir /input //创建input目录
hadoop fs -rm -r /output //如果有output目录,删除
hadoop fs -put /home/test.txt /input //把测试文本上传到input目录上
Hadoop jar /home/master/bigdata/hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount /input /output
//执行程序,wordcount为程序的主类名, /input 输入目录 /output 输出目录(输出目录不能存在)
这个wordcount程序可以去/hadoop-3.0.0/share/hadoop/mapreduce/ 里去找,一定要把路径写对.
hadoop fs -ls /output //完成后查看输出目录
hadoop fs -cat /output/part-r-00000 //查看输出结果

运行处如下结果就说明搭建正确了:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值