从0开始的Ubuntu分布式配置(林子雨)

资源下载

Ubuntu16、Hadoop、Jdk(提取码kane)

安装VMware

VMware

点击上方链接,并拖下至箭头位置,点击安装。安装过程中使用默认配置即可。

afff2ba3eb3c4c5fac01cff6cfa05bc1.png

安装Ubuntu

将资源下载区的Ubuntu16下载好,并成功安装VMware后,即可在VMWare中安装Ubuntu16。

打开VMware,使用快捷键Ctrl+N快速创建虚拟机,这里选择典型配置

9a26c25d8c8f46eda21aa2f9a3e48eab.png

找到刚刚下载好的Ubuntu文件并选择,点击下一步

2f0aed7b7e9448dbab320950735dd65b.png

这里建议大家所有的地方都输入hadoop,分别记忆,也避免和后面的操作出现冲突

9f624e4f7ede469ea3ffea413b89e415.png

命名和位置看个人喜好,点击下一步

2c61d95639e54c23b3a2971d237fda83.png

选择储存为单个文件,磁盘大小也可以适当提高,下一步

22bad652df384644ab0d0f79740a8df6.png

这里建议大家点击自定义硬件

789c18f42166481aa9a4ee4e6f0e0ba3.png

将内存设置为8G后,点击关闭,然后点击完成。至此Ubuntu安装完成。

2be6d67844d44cf5990e8155a74f670b.png

对Ubuntu进行配置

更换源

由于Ubuntu默认为国外源,所以在使用时经常出现网络无法使用的情况,所以我们需要对源进行更换。这里选择的是阿里云镜像(mirrors.aliyun.com)

6463d4d097ce49658aeb39f616673784.png

d833048886504d5f9dba4591bcf09bc0.png

abe0d73e9bc84e1e8fc6576b778e8e36.png

选择完mirrors.aliyun.com后,依次点击choose server、close、reload,并等待更新完成。

5a8b96bdc67141bdb12e36d1ad6ef248.png

d9be315c63934b3aaf0a3d48797f25e8.png

更新apt

换完源后,我们需要对apt进行更新,点击打开终端

b6a2e03cd5bd4f4997e90b3550e16307.png

输入代码,注意,在Ubuntu中,粘贴与复制的快捷键是Ctrl+Shift+C与Ctrl+Shift+V。

sudo apt-get update

 可能出现的问题一

Could not connect to archive.ubuntukylin.com:10006 (::).

解决方法:

cd /etc/apt/sources.list.d

sudo gedit /etc/apt/sources.list.d/ubuntukylin.list

注释#deb http://archive.ubuntukylin.com:10006/ubuntukylin trusty main即可

可能出现的问题二

Error in `appstreamcli': double free or corruption (fasttop): 0x0000000001bb6000

解决方法:

sudo apt install appstream/xenial-backports

sudo appstreamcli refresh –force

可能出现的问题三

52f0b0be4e2d4806b8525b8b9c941882.png

解决方法

输入代码

sudo su

并重新输入即可

sudo apt-get update

 可能出现的问题四

d32b33877ff04b2698105158549e4579.png

解决方法 

这个问题出现的原因是有些apt还在运行,我们需要停止这些进程,输入代码查看

sudo su              //获取最高权限

ps afx|grep apt      //查找正在运行的进程

 可以看到我的电脑中正在运行的进程

e17127df962d47bd9fc5c4c3d3af9e8d.png

使用代码停止进程 ,注意,中间这个auto apt的进程是不用停止的,将其余的进程结束后,就可以重新更新apt了。

sudo kill -9 693

sudo kill -9 2558

可能出现的问题五

47753106ac3440eeaee102cdbee70a41.png

解决方法

运行代码如下

sudo apt-get remove libappstream3

sudo apt-get update                                                                                                                                                                         

sudo apt-get install

可能出现的问题六 

解决方法

sudo apt-get purge libappstream3

成功运行后显示如下 b04ae139051c48a38c6b364521b7b251.png


安装VMware Tools

安装完VMware Tools后,我们就可以方便的将文件拖入虚拟机。

首先,关闭Ubuntu虚拟机,并再次打开,在打开过程中右键Ubuntu

 97913c11a81445819ae8504fec34220c.png

选择如图位置下的重装VMware Tools,如果不可点击,就隔一秒钟再次右键,直到可以点击后进行点击,随后登录用户。

可以看到,桌面上多了一个文件,我们点击进入

3175ad169dc3411e874618bc58ab03f3.png

 找到箭头指向的文件

8a03174547d04c0ea66dafa6133a6781.png

右键复制

6cbec2159bf34c53bbd06f0b7ba4c4b1.png

并粘贴到主文件夹中

8476bf2eed074388b19e11ab8ad19792.png

点击解压

b0561075ae06410197d3e7a8fdde6f79.png

压缩后出现如图文件夹

a3b37b292f444969839df3736a70be3e.png

我们打开终端输入代码,所有的问题都可以按enter

sudo su                       //进入管理者模式

cd vmware-tools-distrib       //进入解压的文件夹

sudo ./vmware-install.pl      //安装

安装完毕后,我们就可以自由的拖动文件进入虚拟机啦!!!

安装vim(用于文件编辑)

非常简单,运行代码即可,如中途出现选项,输入y即可

sudo apt-get install vim

由于后面很多地方需要用到,所以我简单的介绍一下使用方法,在使用vim命令进入文件时,默认是浏览模式,需要点击 i 来进入编辑模式。编辑完成后,点击esc返回浏览模式,并输入  :wq  来进行保存退出。 

安装SSH

同样很简单,运行代码即可

sudo apt-get install openssh-server

安装完成后可以使用代码进行登录

ssh localhost

由于我们每次登录都需要输入密码,比较麻烦,我们依次输入代码配置成SSH无密码登陆比较方便。

exit                           # 如果登录了ssh,则需要先退出刚才的 ssh localhost

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost

ssh-keygen -t rsa              # 会有提示,都按回车就可以

cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

安装JAVA环境

方法一:(推荐)

在资源下载栏中下载提供的jdk,如果没有安装VMware Tools,则需要根据安装VMware Tools栏中的步骤安装VMware Tools,安装完毕后,我们可以直接将jdk拖入Downloads文件夹中

依次输入以下代码

cd /usr/lib

sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件

cd ~ 

cd Downloads  #注意区分大小写字母

sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

随后进入配置文件

cd ~

vim ~/.bashrc

 按i进入编辑模式,在任意位置插入如下代码

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

 按esc退出编辑模式,按 :wq 保存并退出配置文件,并执行命令让配置文件生效

source ~/.bashrc

配置完成,可用代码进行检查

java -version

方法二:(不怎么推荐)

这里推荐使用java8,在终端运行代码如下

sudo apt-get update

sudo apt-get install openjdk-8-jdk

等待下载完成后,我们需要配置环境变量。首先,我们需要找到jdk的下载位置,我下载的默认路径为 /usr/lib/jvm/java-8-openjdk-amd64,当然,为防止意外出现,我会教大家如何自己寻找。

首先,点击桌面的主文件夹,并找到computer

3f831a7d6a054ab380c76f11a3094e61.png

点击放大镜

8354eaab52194579a19c10c0273b46f6.png

输入jdk并找到如图名称的文件夹

9f2fd3af0c0343db9227b8b468944c35.png

检查里面是否有jre文件夹,如果有就找对了,我的路径为 /usr/lib/jvm/java-8-openjdk-amd64

dae65640390e4be99014f7b11d20d64f.png

找到jdk的位置后,我们需要配置环境变量,输入代码如下,打开环境变量配置文件

cd ~

vim ~/.bashrc

点击i,并在任一位置输入如下代码,注意JAVA_HOME的路径是我们刚刚找到的路径,其余的都可以复制。完成输入后,点击esc,再输入:wq即可退出

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

退出后输入代码更新环境

source ~/.bashrc

并可以通过代码检查是否配置完成

java -version

 安装Hadoop

在资源下载区下载完Hadoop后,我们需要将Hadoop上传到我们的Ubuntu上面,我们将下载的Hadoop拖入到Downloads中

bdd441861caf41d08ea0fa654687177b.png

随后依次输入代码

sudo tar -zxvf ~/Downloads/hadoop-3.3.5.tar.gz -C /usr/local   # 解压到/usr/local中

cd /usr/local/

sudo mv ./hadoop-3.3.5/ ./hadoop            # 将文件夹名改为hadoop

sudo chown -R hadoop ./hadoop       # 修改文件权限

可以输入代码进行检查

cd /usr/local/hadoop

./bin/hadoop version

如果这里出现错误,十有八九是配置环境变量时,jdk的路径找错了,需要大家回到上面按照步骤重新配置环境变量。 

运行例子

都安装完毕后,我们可以通过一个小例子来检验一下

cd /usr/local/hadoop

mkdir ./input

cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep ./input ./output 'dfs[a-z.]+'

cat ./output/*          # 查看运行结果

 输入结果为

1    dfsadmin

 要注意,运行完后如果想要再次运行,则需要先通过代码删除output

rm -r ./output

到这里,我们就已经安装完单机版的Haddop了,接下来继续进行伪分布配置。


Hadoop伪分布配置

cd /usr/local/hadoop/etc/hadoop/

这里我们分别要修改两个文件,分别是core-site.xml 和 hdfs-site.xml 。

修改core-site.xml

sudo gedit core-site.xml

在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

sudo gedit hdfs-site.xml

 在configuration中添加如下代码:

<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 的格式化(注意不要执行第二遍,因为DataNode只不会跟随第二次格式化一起重新生成。)

cd /usr/local/hadoop

./bin/hdfs namenode -format

这里等待NameNode 的格式化完成,开启 NameNode 和 DataNode 守护进程

cd /usr/local/hadoop

./sbin/start-dfs.sh

运行完成后,执行代码jps查看是否成功启动,成功启动后出现如下代码

随后打开浏览器搜索localhost:9870,出现第二张图的内容即代表成功配置伪分布式Hadoop

 我们来运行一个小例子

cd /usr/local/hadoop

./bin/hdfs dfs -mkdir -p /user/hadoop  //在 HDFS 中创建用户目录

./bin/hdfs dfs -mkdir input            //创建input文件夹

./bin/hdfs dfs -put ./etc/hadoop/*.xml input   //将 ./etc/hadoop 中的 xml 文件复制到input中

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

./bin/hdfs dfs -cat output/*           //查看输出

最后的输出结果如下

注意如果生成过一次了,则需要先删除output文件夹

./bin/hdfs dfs -rm -r output

 在全部重新运行上面的代码。


Hadoop分布式配置(集群安装)

网络配置

        首先,你需要至少两台虚拟机,并且这两台虚拟机都要完成伪分布配置。我们选择一个虚拟机作为Master,另外的则做为Slave1、Slave2........,

        在准备好两台完成伪分布配置的虚拟机后,首先我们要确保它们的hadoop是关闭的,为了方便我们可以直接关闭虚拟机。然后点击网络适配器,并将其修改为桥接模式。(两台虚拟机都需要)。

修改完毕后,打开所有的虚拟机并执行命令

sudo vim /etc/hostname

将确定为Master的虚拟机名称改为Master,其他的就是Slave1、Slave2........

保存并退出后,输入代码查看各个节点的ip地址,箭头指向的就是本机的ip地址。

ifconfig

 随后在所有的虚拟机上输入代码,并修改其中的内容。

sudo vim /etc/hosts

        原本的两个127.0.0.1我们只需要留下一个localhost的即可,另一个直接删除。然后在所有的虚拟机上输入节点的ip地址+节点名,注意,是各个虚拟机通过ifconfig所查询到的ip地址,不要直接抄我这里的!!!输入完成后保存并退出,并重启所有的虚拟机。

重启完后,我们可以尝试看各个节点之间能不能ping通。ping通的显示如下

SSH无密码登陆节点

在Master的终端上输入代码

cd ~/.ssh               # 如果没有该目录,先执行一次ssh localhost

rm ./id_rsa*            # 删除之前生成的公匙(如果有)

ssh-keygen -t rsa       # 一直按回车就可以

cat ./id_rsa.pub >> ./authorized_keys

        执行完毕后可以输入 ssh Master 验证一下,确认无误后输入 exit 退出ssh,接着将公钥传输到Slave1上(别的节点也是如此,只是将Slave1换成Slave2等就好了)。

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

并在Slave1 等节点上,将 ssh 公匙加入授权。

mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

rm ~/id_rsa.pub    # 用完就可以删掉了

 完成后,我们就可以在Master上启动Slave节点的ssh了,可以试一下

ssh Slave1

配置PATH变量

在Master上执行

vim ~/.bashrc

并在其中添加一行

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

保存并关闭后执行即可

source ~/.bashrc

配置集群/分布式环境(注意下面的操作都是在Master上的)

输入代码进入目录

cd /usr/local/hadoop/etc/hadoop

我们需要修改几个文件

修改workers

输入代码

vim workers

将其中的localhost删除并加入Slave即可

修改 core-site.xml

输入代码

vim core-site.xml

修改其中的内容如下

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

修改hdfs-site.xml

输入代码

vim hdfs-site.xml

修改其中的内容如下(注意我只有一个Slave1,所以value设置为1,有几个就可以设置为几个)

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <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>

修改mapred-site.xml

输入代码

vim mapred-site.xml

修改其中的内容如下

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>

修改yarn-site.xml

输入代码

vim yarn-site.xml

修改其中的内容如下

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

至此,所有的文件修改完成。


启动Hadoop

在 Master 节点上执行

cd /usr/local

sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件

sudo rm -r ./hadoop/logs/*   # 删除日志文件

tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制

cd ~

scp ./hadoop.master.tar.gz Slave1:/home/hadoop

在 Slave节点上执行

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)

sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local

sudo chown -R hadoop /usr/local/hadoop

在 Master 节点执行 NameNode 的格式化

hdfs namenode -format       # 首次运行需要执行初始化,之后不需要

在Master上启动 hadoop

start-dfs.sh

start-yarn.sh

mr-jobhistory-daemon.sh start historyserver

        我们可以通过 jps 在Master节点和Slave节点上观察启动的进程,正确启动后如下(注意只有这一种情况正确)

执行分布式实例

在Master上输入

hdfs dfs -mkdir -p /user/hadoop

hdfs dfs -mkdir input

hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

./bin/hdfs dfs -cat output/*

如果最后的结果如下

那么恭喜大家,成功完成了从0到单机式到伪分布最后到分布式的配置!!!

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dak2n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值