0
点赞
收藏
分享

微信扫一扫

Linux系统,Hadoop,R语言,RHadoop的安装

zhaoxj0217 2022-04-18 阅读 80

目录

安装准备

linux系统安装

Hadoop安装

R语言安装 

 RHadoop安装 

分布式参考


我是R语言linux以及hadoop小白,因为课程任务接触的这些内容,是我自己找资料进行的汇总,有些写的不对的地方也请大家指出来。

安装准备

如果选择的系统是32位Ubuntu系统,那么直接跳过此步骤内容。
如果选择的系统是64位Ubuntu系统,那么在安装虚拟机前,我们还要进入BIOS开启CPU的虚拟化。

开启CPU 虚拟化可以自行查找资料,因为这一步不同的电脑打开BIOS的方式都不同,所以就省略了。

linux系统安装

我是在virtualbox虚拟机上安装的ubuntu16.04。下载地址用的是林子雨老师的百度网盘地址,提取码99bg,里面还有JDK的文件也可以一起下载。打开虚拟机后点击新建,然后进行下图的选择。

点击下一步进行内存大小的设置,使用虚拟机安装内存最好大一些,不然会很卡,我的电脑内存是16G,所以我分了8G;然后点击下一步选择现在创建虚拟硬盘,点击创建,选择VDI,点击下一步选择动态分配,点击下一步进行硬盘的分配,这里也多分配一点,为了在之后需要安装很多的组件。这里就设置好了虚拟机。

点击存储选项,会打开虚拟机的存储设置。点击没有盘片,在右边点击盘片选择选择或创建一个虚拟光盘文件。打开选项后,点击注册找到下载的光盘文件,如果选择光盘文件后页面中没有显示,点击刷新就可以看到了,然后点击OK退出。

再设置一下虚拟机的网络,点击选项后选择桥接网卡。

为了能后让win和虚拟机可以相互的复制黏贴,这里需要设置一下粘贴板;点击虚拟机的设置选项,找到常规,点击高级,可以看到共享粘贴板,选择双向

现在可以进行ubuntu的安装了。

点击启动进入ubuntu的安装。

点击安装,这里我选择了安装中文版,但好像安装英文版会减少一些错误的出现。点击安装后在出现的界面中直接选择继续,在安装类型中选择其他选项,打开的新页面中点击新建分区表,如果页面没有这个选项,就按住ALT键使用鼠标拖拽找到,点击新建分区表后,会有提示点击继续即可。选择下图中的空闲,然后再点击“+”按钮,用来创建交换空间。

对交换空间进行如下设置。

选择图中“空闲”,然后再点击“+”按钮,用来创建根目录。这里大小不用改动。

对根目录进行如下设置。

 设置结束就可以进行安装了,点击右下角的现在安装

选择地区,以及键盘布局,我这里都选择了默认。

进行如下的用户名设置。点击继续就可等着了。千万不能点击跳过。 安装结束后进行重启,界面会提示删除光盘,删除后键盘按ENTER。

 

重启动后,虚拟机ubuntu系统默认是以窗口模式打开,而且分辨率很低。这是Virtualbox初始安装完ubuntu的原因,我们需要修复这个,让虚拟机支持大的分辨率,点击左上角的设备选项,选择安装增强功能。这里需要等待一段时间,然后提示键入return关闭窗口。打开ubuntu的终端执行下面代码。这时粘贴板还不能用,需要执行下面代码后重启。重启后就可以进入系统设置进行显示的设置。

sudo apt-get install virtualbox-guest-dkms

Hadoop安装

1.创建hadoop用户

如果你安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么需要增加一个名为 hadoop 的用户,如果使用上面的设置用户名的方式可以跳过。

首先打开终端窗口,或者按 ctrl+alt+t 打开,输入如下命令创建新用户 。这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell。

sudo useradd -m hadoop -s /bin/bash

接着使用如下命令设置密码,可简单设置为hadoop,按提示输入两次密码。

sudo passwd hadoop

可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题。

sudo adduser hadoop sudo

最后注销当前用户(点击屏幕右上角的齿轮,选择注销),返回登陆界面。在登陆界面中选择刚创建的 hadoop 用户进行登陆。

2.更新apt

登入后,我们先更新一下 apt,因为我们需要使用 apt 安装软件,如果没更新可能有一些软件安装不了,或者版本比较旧。打开终端窗口,执行如下命令。

sudo apt-get update

若出现“Hash校验和不符,无法下载” 的提示,可通过更改软件源来解决。这里可以查找如何更改下载源的资料自行解决。有时候下载源会带来很多的问题,比如还有“提示无法修正错误”的问题,也可以通过修改下载源解决,如果解决不了,可以使用aptitude 来解决,因为所安装软件包依赖低版本的时候,无法升级或者降级当前的依赖版本,由于解决不了软件包的依赖关系,所以也就导致无法安装成功。

后续需要更改一些配置文件,我使用的是 vim(vi增强版,基本用法相同),建议安装一下;当然也可以使用gedit更改配置文件。使用下面代码添加vim。安装时会提示确认都键入y。

sudo apt-get install vim

3.安装SSH、配置SSH无密码登陆

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

sudo apt-get install openssh-server

安装后,可以使用如下命令登陆本机。此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

ssh localhost

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

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

 4.安装Java环境

我是使用手动安装的,需要按照下面步骤来手动安装JDK1.8。

请把压缩格式的文件jdk-8u162-linux-x64.tar.gz下载到本地电脑,假设保存在“/home/hadoop/下载/”目录下。这里有两种方式下载文件,一种是使用ubuntu自带的浏览器打开百度网盘下载,还有就是使用SecureCRT,将win中的文件上传到虚拟机ubuntu中。下面介绍SecureCRT使用。

安装好SecureCRT后,打开它,鼠标放在Sessions点击鼠标右键,选择New Session。 

在打开的界面中,协议默认选SSH2,点击下一步。新的界面中,在hostname中需要写安装的虚拟机的地址。这里需要在ubuntu终端使用下面代码。

ifconfig 

地址如下。

username使用ubuntu的登入用户名。session name自己设置一下,这样就完成了。

 点击图中标识,如果没有配置SSH是连接不成功的。连接成功后,右键选择connect SFTP session。这样就可以传文件了,将需要的文件拖拽到打开的SFTP中就成功了。

上传完成后,默认在家目录下,就是“/home/hadoop”目录下,这里hadoop是我的登入用户名。

 使用下面的命令解压安装。

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
ls #进入目录后使用ls可以查看目录下的文件
sudo tar -zxvf ~/jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

 JDK文件解压缩以后,可以执行如下命令到/usr/lib/jvm目录查看一下。

cd /usr/lib/jvm
ls

可以看到,在/usr/lib/jvm目录下有个jdk1.8.0_162目录。下面继续执行如下命令,设置环境变量。

cd ~
vim ~/.bashrc

 打开了hadoop这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容。

使用vim打开文件后,键盘按i,就可以进行编辑了,编辑结束后,按ESC退出编辑,然后键入:wq退出。配置结束后一定要使用source ~/.bashrc代码命令让.bashrc文件的配置立即生效。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

使用java -version命令可以查看是否配置成功,如果显示了java版本信息说明安装成功。

5.安装 Hadoop 2

可以通过Hadoop的官网下载,也可以使用前面的百度网盘下载,也可以使用前面提到的SecureCRT的方式上传文件到Ubuntu。

通过下面的代码将Hadoop 安装至 /usr/local/ 中。

sudo tar -zxf ~/hadoop-2.7.1.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.1/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

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

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

Hadoop的环境配置使用如下命令。

vim ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop #在打开的文件里添加
export PATH=$PATH:$HADOOP_HOME/bin   #在打开的文件里添加
source ~/.bashrc                     #配置好后,一定记得使用这个代码

 配置好后在终端键入hadoop,如果显示信息表示成功。

6.Hadoop伪分布式配置

这里介绍伪分布的配置,如果想要分布式的配置,在文章结尾会给出参考网页。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改配置文件 core-site.xml (通过 gedit 编辑会比较方便: gedit ./etc/hadoop/core-site.xml),将当中的

<configuration>

</configuration>

修改为下面内容,修改后记得保存。

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <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>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

 配置完成后,执行 NameNode 的格式化。

cd /usr/local/hadoop
./bin/hdfs namenode -format

成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。

接着开启 NameNode 和 DataNode 守护进程。若出现如下SSH提示,输入yes即可。

cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格
./sbin/stop-dfs.sh   #关闭hdfs,不再使用hdfs后,记得关闭

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”。

伪分布实例:

伪分布式读取的是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录。

./bin/hdfs dfs -mkdir -p /user/hadoop

接着将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input 中。我们使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应的绝对路径就是 /user/hadoop/input。

./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
./bin/hdfs dfs -ls input#复制完成后,可以通过如下命令查看文件列表

R语言安装 

我安装的R版本是3.4.4,因为3.5之后版本有一些兼容问题。

可以使用下面的代码安装。这样安装的版本比较旧。

sudo apt-get install r-base
sudo apt-get install r-base-dev

 我在使用sudo apt-get update 更新后还是只能下载旧版本,找了很久资料找到了可以安装3.4和3.6还有4.0版本的方法。

我以我的ubuntu16.04为例。直接在命令行界面,输入如下命令,即可快速升级到4.0最新版本。

sudo su
echo "deb http://www.stats.bris.ac.uk/R/bin/linux/ubuntu xenial-cran40/" >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
apt-get update
apt-get upgrade
sudo apt-get install r-base

如果想要下载ubuntu其他版本可以更改如下。只要修改ubuntu不同版本的别名,就像16.04别名是xenial,可以在网上找到这些别名。

echo "deb http://www.stats.bris.ac.uk/R/bin/linux/ubuntu trusty-cran40/" >> /etc/apt/sources.list              #Ubuntu 14.04
echo "deb http://www.stats.bris.ac.uk/R/bin/linux/ubuntu bionic-cran40/" >> /etc/apt/sources.list              #Ubuntu 18.04

如果想要下载r其他版本可以更改如下。

echo "deb http://www.stats.bris.ac.uk/R/bin/linux/ubuntu xenial-cran35/" >> /etc/apt/sources.list        #R版本R 3.6
echo "deb http://www.stats.bris.ac.uk/R/bin/linux/ubuntu xenial/" >> /etc/apt/sources.list 
                             #R版本R 3.4

如果下载了3.4.4版本后在后续下载r包时,会显示版本不可用,这是因为r版本太低,r包版本高导致,后面会介绍如何手动安装合适的版本r包。

我使用的是3.4.4版本R,如果下载的是3.5版本以后的R,会出现无法从由R版本XX写的工作空间版本3中读取数据;这是由于版本问题不兼容。

手动安装R包步骤如下。

第一步需要用wget下载R包到本地,或者使用浏览器下载到win下,再上传到虚拟机。

第二步需要找到自己在服务器上安装的R包的library库的绝对路径。

先进入R交互式命令行,然后使用命令install.packages("package_name",repos = NULL),这样可以找到library路径。在交互中选择n。

第三步在ubuntu终端命令行下编译安装R包。

R CMD INSTALL -l /path/to/your/library  /path/to/your/downloaded/package

 RHadoop安装 

先在终端安装依赖库。 

sudo apt-get install git libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool 
flex bison pkg-config g++ libssl-dev

设置java配置。

sudo R CMD javareconf

如果提示JAVA_HOME路径不合适使用下面代码。将 R 指向带有 JDK 8 的路径。

sudo R CMD javareconf JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162/

为了安装rhdfs和rmr2包需要进行下面的环境配置,同样使用vim ~/.bashrc打开。

export HADOOP_CMD=$HADOOP_HOME/bin/hadoop
export HADOOP_STREAMING=$HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar
export LD_LIBRARY_PATH=/usr/lib/jvm/jdk1.8.0_162/jre/lib/amd64/server

这里需要注意的是权限问题,如果修改的是hadoop user 的 .bashrc 文件或者以 hadoop 身份export, 这些环境变量就只对 hadoop user 有用,但是下面一个步骤需要 root 权限,所以可能需要重新在 R 里重新设置一下。

> Sys.setenv("HADOOP_CMD"="/usr/local/hadoop/bin/hadoop")
> Sys.setenv("HADOOP_STREAMING"="/usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar")
> Sys.setenv("LD_LIBRARY_PATH"="/usr/lib/jvm/jdk1.8.0_162/jre/lib/amd64/server")

检查 R 是否设置了这些环境变量,用下面命令。

> Sys.getenv("HADOOP_CMD")

这里需要以 root 权限启动R,进行安装R依赖库。

sudo R
#在R中
> install.packages(c("rJava", "Rcpp", "RJSONIO", "bitops","caTools","digest", "functional", "stringr", "plyr", "reshape2"))

这样这些包就被安装到默认的 R 路径下:/usr/local/lib/R/site-library 

最好将包放在路径/usr/lib/R/

安装 rmr2,rhdfs,由于这三个库不能在CRAN中找到,所以需要自己下载。
https://github.com/RevolutionAnalytics/RHadoop/wiki

下载好后用下面命令安装。

> install.packages('/home/hadoop/rmr2_3.3.1.tar.gz',repo=NULL,type="source")
> install.packages('/home/hadoop/rhdfs_1.0.8.tar.gz',repo=NULL,type="source")

如果提示“ fatal error: Rcpp.h: 没有那个文件或目录”的错误,使用下面方法解决。Rcpp包问题还是很多的。在R中先删除之前的Rcpp包。进行下面操作后重新安装rmr2包,需要安装到Rcpp包同目录下。

sudo apt-get install apt-file #先下载apt-file
sudo apt-file update #执行更新
sudo apt-file search include/Rcpp.h #查找Rcpp.h
sudo apt-get install r-cran-rcpp

如果提示无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

因为所安装软件包依赖低版本的时候,无法升级或者降级当前的依赖版本,由于解决不了软件包的依赖关系,所以也就导致无法安装成功。

可以采用的有效解决方法是使用 aptitude 来帮助降级解决软件包的依赖版本,步骤如下。

使用 aptitude 安装软件包,安装过程中,第一个交互提示你是否保持包版本不变,即不更新,这里输入 n,后面的交互提示输入 y 即可。然后重新安装rmr2包。

sudo apt-get install -y aptitude #安装aptitude
sudo aptitude install r-cran-rcpp

在R中使用library()命令加载rhdfs和rmr2包, 如果 rmr2和rhdfs都没有问题,那么RHadoop就算安装成功了。

分布式参考

Hadoop集群安装配置

 

 

 

 

 

 

 

 

举报

相关推荐

0 条评论