hadoop伪集群安装与配置(hadoop2.9.2+ubuntu16.04)

    hadoop伪分布式集群(是指在一台电脑上模拟运行多个节点)的安装主要分类两部分:1.虚拟主机的安装与配置,2.hadoop框架的安装与配置。

虚拟主机的安装与配置    

    虚拟主机的安装与配置主要分为vmware软件安装、linux操作系统安装以及secureCRT软件的安装。在以上三样安装好之后,就需要配置每个节点的主机名、每个节点的静态ip地址和dns域名、关闭每个节点的防火墙、以及对每个节点进行免密钥登录配置。

    1. vmware软件、linux服务器、secureCRT的安装可以参考一下链接

       https://blog.csdn.net/qq_42881421/article/details/100522327

       https://blog.csdn.net/persistencegoing/article/details/93187906

       https://blog.csdn.net/weixin_39127054/article/details/79861202

    2. 配置每个节点的主机名,通过命令 “vi  /etc/hostname” 来修改,将目标主机名代替其中的原来的主机名即可。

    3. dhcp协议会根据每台机器在某一段时间内分配一个固定的ip地址,所以每个节点我仍然采用动态分配ip的方式(要是ip地址改变了就等以后有改变在说,反正直到现在ip地址一直没有变过),然后通过命令 “vi /etc/hosts” 来配置每一个节点域名映射。(有点坑,用了几个月之后的某一天突然发现secureCRT不能连上vmware上的虚拟机了,win命令行ping也没有ping通,不过虚拟机节点却可以访问外网,一开始习惯性的认为是系统故障了,重启后突然发现是虚拟机节点的ip地址发生了变化,所以一开始一定要给虚拟机配置固定的ip地址啊!!!配置静态ip的时候默认网关一定要去查虚拟机软件的“编辑->虚拟网络编辑器”,我默认网关配置错了,导致无法连通外网!!!)

    4. ubuntu下关闭防火墙的命令是 “sudo ufw disable”, 查看防火墙的状态的命令是 “ sudo ufw status”

    5. 使用命令“ssh-keygen -t rsa”来产生一对密钥,生成的密钥在 /home/user/.ssh 文件夹中,然后将其改名为authorized_keys(我也不知道为啥要改名),接着将改名后的公钥复制到所有子节点的对应文件夹中,而私钥留在主节点中(namenode所在的主机)。只要复制主节点的公钥到子节点即可,因为start-yarn.sh的时候会在主节点启动子节点上的nodemanager。

    注意:hadoop集群的用户名需要一致,因为在使用start-dfs.sh、start-yarn.sh和start-hbase.sh 时,主节点会通过ssh启动子节点上的相应进程,如果用户名不一致,就会造成以主节点的用户名和子节点的域名去连接子节点的情况,导致连接不上,服务无法启动的情况。

 

hadoop框架的安装与配置

    hadoop需要运行在jdk之上,所以在安装hadoop之前需要先安装jdk,注意jdk的版本与hadoop的版本需要适合(我用的版本是hadoop-2.9.2+jdk-8u181-linux-x64)。下载jdk并上传到集群的每个节点,并配置好系统环境变量。在secureCRT界面上传jdk文件的方法是,按下"Alt+P"打开sftp页面,然后用“put -r 本地文件目录”来上传本地文件到服务器节点。

    jdk的安装可以参考链接https://blog.csdn.net/Shezzer/article/details/84072981

    然后下载hadoop框架,在上传到集群的每一个节点上之后,也需要配置系统环境变量,即在/etc/profile中配置hadoop的路径。接着,在hadoop-2.9.2/etc/hadoop-env.shhadoop-2.9.2/etc/yarn-env.sh文件中配置jdk的路径(添加路径的时候不需要加bin)。继续配置core-site.xml、hdfs-site.xml、slaves、yarn-site.xml配置文件。

    1. core-site.xml文件中的fd.defaultFS指出hadoop文件系统的名称,例如 hdfs://hdp01:9000,每个datanode节点在启动的时候都可以通过该域名加端口号来连接namenode。配置hadoop.tmp.dir到一个本地指定的目录,其中会存放hadoop文件系统依赖的基本配置,很多配置路径都依赖它,如果不指定,则默认会存储在/tmp/{$user}下,而一旦断电,则该目录中的所有内容都会被清空。

    2. hdfs-site.xml文件中的dfs.namenode.name.dir指明namenode节点信息存储的目录,dfs.datanode.data.dir指明datanode节点信息存储的目录。

    3. slaves中存放需要启动datanode进程的节点ip,另外通过Start-yarn.sh来启动所有nodemanager的时候,也是通过slaves配置文件来知道的。

    4. yarn-site.xml中yarn.resourcemanager.hostname配置运行资源管理器的主机的域名或者ip地址如hdp01,所有的nodemanager都会通过该配置来联系resourcemanager。yarn.nodemanager.aux-services配置为服务器列表,值为mapreduce_shuffle,该配置使得reduce程序可以通过http来获取map的操作结果。

    在用户目录的.bash_profile中配置hadoop路径,就可以在全局调用hadoop命令,例如:

    export HADOOP_HOME=/home/h1/hadoop/hadoop-2.9.2
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

 

hadoop集群的启动

    hadoop集群内每一个节点都有namenode软件和datanode软件,但是所以如何在那个节点上启动那个软件就至关重要,并且一旦第一次规定好了之后就不能改了,如果第一次在节点a上启动了namenode,但是第二次在节点b上启动了namenode那么就会出错,第一次保存在hadoop集群上的数据就无法找到了。

    初始化namenode属于元目录    hadoop namenode -format

    启动nanmenode进程    hadoop-daemon.sh start namenode    

    启动datanode进程    hadoop-daemon.sh start datanode

    在此之后便可以在浏览器中输入url " http://hdp01:50070 " 来查看hdfs的情况。注意,hdp01主节点中的50070端口是用于浏览器访问的,而9000端口则是用于namenode主节点与各datanode次节点通信用的。

    启动整个hdfs集群使用命令 start-dfs.sh,如果要停止则用 stop-dfs.sh。无论在哪个节点上使用start-dfs.sh都没有关系,应为通过core-site.xml知道哪个该在哪些节点启动nomenode,通过slaves知道该在那些节点启动datanode。(start-dfs.sh除了会启动以上两个软件以外,还会启动SecondaryNameNode软件)

    启动yarn集群使用start-yarn.sh命令,如果要停止则使用stop-yarn.sh。yarn集群中的resourcemanager的启动由于没有配置文件,所以默认在哪个节点上使用start-yarn.sh命令,就在该节点上启动resourcemanager,至于nodemanager,遵循配置文件slaves中的内容启动(有datanode的地方就有nodemanager)。也可以采用yarn-daemon.sh start xxx来启动相应的服务。在web浏览器中输入网址“http://hdp01:8088”就可以看到yarn的web控制台。

    另外,在启动整个hadoop集群时我也遇到过以下的一些问题:

1. nice: ‘/home/hadoop/hadoop-2.9.2/bin/hdfs’: Permission denied 

权限问题,进入/home/hadoop/hadoop-2.9.2/bin/中,然后chmod 777 hdfs就可以了

2. WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: hdp01/192.168.150.128:9000

无法连接服务器(namenode),解决方法是关闭每个节点的防火墙,我用的是ubuntu服务器,所以输入sudo ufw  disable

3.启动start-dfs.sh后出现sbin/hadoop-daemons.sh: Permission denied问题

给hadoop-daemons.sh 777权限就可以了

4. 当集群只有两台的时候服务器的时候,且需要在主节点也启动nodemanager时,直接采用start-yarn.sh可能会出错。解决方法,直接采用yarn-daemon.sh start nodemanager启动。

5. INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master?

    解决方法:检查各个节点在etc/hosts中的配置是否有127.0.1.1 xxxxxx。如果有把其屏蔽或者删除,重启各节点即可。

 

在hadoop集群上运行wordcount程序

     参考链接:https://blog.csdn.net/Bolong_/article/details/79712606

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值