不是开头的开头

大数据竞赛训练时候有用到java的hadoop配置,因为是第一次也没多少基础,路上遇到的坑还是蛮多的,刚从补考中挣脱了出来,有了空就来水一下吧,顺便把遇到的问题也写写,下次遇到hadoop配置时候也能有方案给出。

正文

Hadoop安装
下载hadoop2.75 hadoop2.7.5下载 (207M的文件)

在Ubuntu18.10环境下(同样适用于Ubuntu16.04环境)
1:更新系统

$ apt-get update
$ sudo  apt-get  upgrade

二、 安装SSH、配置SSH无密码登陆
    集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

$ sudo apt-get install openssh-server

安装后,可以使用如下命令登陆本机:

$ ssh localhost

   但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
    首先退出刚才的ssh,就回到了我们原先的终端窗口,然后利用ssh-keygen 生成密钥,并将密钥加入到授权中:

$ exit                           # 退出刚才的 ssh localhost
$ cd ~/.ssh/                     # 若没有该目录,请先执行一次
$ ssh localhost ssh-keygen -t rsa              #会有提示,都按回车就可以
$ cat ./id_rsa.pub  >>  ./authorized_keys # 加入授权ssh

再次输入$ ssh localhost此时不需要密码

安装java环境

sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update
sudo apt install oracle-java8-set-default

添加java到环境变量

sudo gedit  ~/.bashrc

在里面添加

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

如下图所示:

图片1.png

配置完后刷新环境变量

source  ~/.bashrc

 验证java安装是否成功

$ java –version

图片2.png

设置好后我们来检验一下是否设置正确:

$ echo $JAVA_HOME

图片3.png

$JAVA_HOME/bin/java -version

图片4.png

这样我们的java就成功的安装上了

安装hadoop2.7.5

安装 Hadoop 2.75
我们选择将 Hadoop 安装至 /usr/local/ 中:
这边直接将桌面下载好的文件解压到指定路径下

$ sudo tar -zxvf  /home/moeyu/Desktop/hadoop-2.7.5.tar.gz -C /usr/local/   # 解压到/usr/local中
$ cd /usr/local
$ sudo mv ./hadoop-2.7.5/ ./hadoop            # 将文件夹名改为hadoop

  Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
    

$ cd /usr/local/hadoop
$ ./bin/hadoop version

图片5.png

修改3个配置文件里的jdk路径:

hadoop-env.sh
mapred-env.sh
yarn-env.sh

操作如图:

$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh   

图片6.png

$ sudo gedit /usr/local/hadoop/etc/hadoop/yarn-env.sh

图片7.png

$ sudo gedit /usr/local/hadoop/etc/hadoop/mapred-env.sh    

图片8.png

之后修改core-site.xml

$ sudo gedit core-site.xml

图片9.png

属性解释:
fs.defaultFS:HDFS集群访问入口地址,其中z01也可以换成当前Linux的本机ip,如果此时你还没 
有在Linux中设置主机名映射,请参照之前Linux中的知识点进行设置即可。
hadoop.tmp.dir:数据存放路径

修改hdfs-site.xml

$ sudo gedit hdfs-site.xml

图片10.png

dfs.replication:数据块副本数,默认为3。
dfs.namenode.name.dir:属性可以配置多个目录, 
如 /data1/dfs/name,/data2/dfs/name ,/data3/dfs/name 等。各个目录存储的文件结构和内 
容都完全一样,相当于备份,这样做的好处是当其中一个目录损坏了,也不会影响到 Hadoop 的元数 
据,特别是当其中一个目录是 NFS(网络文件系统 Network File System,NFS)之上,即使你这 
台机器损坏了,元数据也得到保存。

参考文献:Hadoop NameNode元数据相关文件目录解析

修改*yarn-site.xml

$ sudo gedit yarn-site.xml

图片11.png

属性解释:
yarn.nodemanager.aux-services:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序
yarn.resourcemanager.hostname:resourcemanager的主机名,即哪一台主机当做ResourceManager
yarn.log-aggregation-enable:是否开启日志聚合功能
yarn.log-aggregation.retain-seconds:在HDFS上聚集的日志最多保存多长时间,单位:秒,86400相当于24小时
其他属性:
yarn.nodemanager.resource.memory-mb:表示该节点上yarn可使用的物理内存总量,默认是8192MB,如果该节点机器的内存不足8G,则需要调小这个值,yarn不会智能的探测节点的物理内存总量。
yarn.nodemanager.vmem-pmem-ratio:任务每使用1MB物理内存,最多可使用的虚拟内存量,默认为2.1。
yarn.nodemanager.pmem-check-enabled:是否启动一个县城检查每个任务正在使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认值为true。
yarn.nodemanager.vmem-check-enabled:是否启动一个线程检查每个任务正在使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认值为true。
yarn.scheduler.minimum-allocation-mb:单个任务可申请的最少物理内存量,默认是1024MB,如果一个任务申请的物理内存量少于该值,则对应的值改为这个数。
yarn.scheduler.maximum-allocation-mb:单个任务可申请的最多物理内存量,默认是8192MB。

修改mapred-site.xml

$ sudo cp mapred-site.xml.template mapred-site.xml
$ Sudo gedit mapred-site.xml

图片12.png

属性解释:
mapreduce.framework.name:设置运行MapReduce任务的框架
mapreduce.jobhistory.address:自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的。配置该地址后,启动服务就可以通过Web UI来查看具体使用详情了。
mapreduce.jobhistory.webapp.address:web app客户端的访问入口

启动服务

** 启动服务
启动过程分为如下几个过程:

  • 格式化hdfs
    由于当前主机第一次使用hdfs系统,所以使用之前需要先格式化

进入到/usr/local/hadoop目录下

$ bin/hdfs namenode –format

图片13.png
格式化完成之后,开启节点服务

$ sbin/start-all.sh(一键开启所有服务)

图片14.png
或者一个一个节点开启

$ sbin/hadoop-daemon.sh start namenode:开启nodenode节点服务
$ sbin/hadoop-daemon.sh start datanode:开启datanode节点服务
$ sbin/yarn-daemon.sh start resourcemanager:开启resourcemanager
$ sbin/yarn-daemon.sh start nodemanager:开启nodemanager

使用jps命令查看是否开启
图片15.jpg

此时可以通过浏览器成功访问hdfs管理平台:http://ip:50070
yarn管理平台:http://ip:8088

图片16.png

图片17.png

注意事项!(可能遇到的问题)

图片18.png

在Ubuntu中,运用sudo apt-get install 安装软件时,会出现一下的情况
在这个时候,主要是因为apt还在运行,此时的解决方案是找到并且杀掉所有的apt-get 和apt进程,运行下面的命令来生成所有含有 apt 的进程列表,可以使用ps和grep命令并用管道组合来得到含有apt或者apt-get的进程

ps -A | grep system

显示进程.jpg

再用kill命令结束进程

kill [信号代码] <进程PID> 

根据PID向进程发送信号,常用来结束进程

kill -9 pid

安装ssh必须在root用户下安装,不然会出现普通用户可以免密登录而root用户必须要输入密码才能登录
ssh 免密码登陆
解决办法卸载重装,或者改变ssh文件权限

在正常步骤安装后启用所有服务会发现并不能启用,解决方案:

$ su root 密码 //建立root账户 设个密码

1)生成没有密码的ssh密钥

$ ssh-keygen -t rsa -P ""

2)将id_rsa.pub复制到授权密钥

$  cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

3)启动ssh localhost

$ ssh localhost

4)现在转到hadoop sbin目录并启动hadoop

$ sbin/start-all.sh 

启动后能使用jps命令后查看到DataNode服务并没有开启,然后修改hadoop/conf目录里面的core-site.xml文件,加入以下节点:

<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/moeyu/hadoop_tmp</value>
    <description>A base for other temporary directories. </description>
 </property>

因为我的用户是moeyu所以目录是/home/moeyu/hadoop_tmp
重新格式化Namenode
bin/hadoop namenode -format(在root模式下)
再次jps查看即可看到开启

Last modification:February 24th, 2019 at 12:11 am
如果觉得我的文章对你有用,请随意赞赏