超级无敌详细使用ubuntu搭建hadoop完全分布式集群
<h2 id="一软件准备">一、软件准备</h2><ol>
<li>安装VMware</li>
<li>下载ubuntu镜像(阿里源ubuntu下载地址)选择自己适合的版本,以下我使用的是18.04-server版就是没有桌面的。安装桌面版如果自己电脑配置不行的话启动集群容易卡死。</li>
</ol>
<hr>
<blockquote>
<p><strong>(说明一下哈就是桌面版和服务器版没什么太大的区别,桌面版为个人电脑所配置,预装了图形界面和一些其他软件,比如LibreOffice,音乐播放器,游戏等等,而服务器版没有这些东西,服务器版启动之后只有一个黑屏+光标,所有的操作都是命令形式的)</strong></p>
</blockquote>
<hr>
<ol start="3">
<li>下载Hadoop和jdk(链接:https://pan.baidu.com/s/1QL4flw5_XRhVrGouZyPhjg<br>
提取码:a0z6 )也可以去官网下载。</li>
<li>准备xshell和xftp后期要使用xftp网虚拟机上上传文件(链接:https://pan.baidu.com/s/1nkMCSxuVPFKO6wiLdAB7cA<br>
提取码:mbb6 )</li>
</ol>
<h2 id="二安装过程">二、安装过程</h2>
<ol>
<li>首先在VMware里创建一个名为master的虚拟机(在已经安装完VMware的前提下)</li>
</ol>
<ul>
<li>
<p>打开VMware点击-----创建新的虚拟机弹出窗口选择典型安装即可----下一步:<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122202133498-846068836.png"></p>
</li>
<li>
<p>弹出以下窗口 选择 稍后安装操作系统----下一步:<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122202334706-1085419222.png"></p>
</li>
<li>
<p>选择需要安装的操作系统----下一步:<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122202939521-589634103.png"></p>
</li>
<li>
<p>这里设置虚拟机的名字和要安装的位置----下一步:<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122202955178-1270433138.png"></p>
</li>
<li>
<p>设置磁盘容量----下一步:<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203013273-66712635.png"></p>
</li>
<li>
<p>这里先不要点击完成选择自定义硬件<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203033539-444055.png"></p>
</li>
<li>
<p>这里指定自己ISO镜像的位置----关闭<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203121029-596317462.png"></p>
</li>
<li>
<p>点击完成<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203149164-314525920.png"></p>
</li>
<li>
<p>可以看到VMware下生成了一个名为master的虚拟机----点击开启此虚拟机。</p>
</li>
</ul>
<blockquote>
<p>现在虚拟机还不能使用,现在就相当于一个没有安装操作系统的空电脑,只有躯体没有灵魂</p>
</blockquote>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203219157-1538269085.png"></p>
<ul>
<li>
<p>点开之后会一阵加载文件,等一会会出现下面界面:<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203229688-1549693051.png"></p>
</li>
<li>
<p>这里选择继续而不更新----摁回车<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203443368-527021473.png"></p>
</li>
<li>
<p>这里是设置键盘默认就可以了----摁回车<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203457721-1602230304.png"></p>
</li>
<li>
<p>这里也是直接默认就可以了----摁回车<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203603242-1090562742.png"></p>
</li>
<li>
<p>这里是设置代理服务器的,不用填写直接回车就可以了<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203617023-235505934.png"></p>
</li>
<li>
<p>设置下载源<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203627825-1822256313.png"></p>
</li>
<li>
<p>选择Done直接回车就可以了<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203739822-1421521480.png"></p>
</li>
<li>
<p>这里也是默认直接回车<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203748820-1561699870.png"></p>
</li>
<li>
<p>上一步回车之后会弹出一个对话框如下图:----选择Continue回车<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203803850-746874550.png"></p>
</li>
<li>
<p>设置用户名和主机名设置完之后选在Done进行下一步<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203812802-316430934.png"></p>
</li>
<li>
<p>选择安装OpenSSH 服务<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203822948-541975254.png"></p>
</li>
<li>
<p>直接选择Done进行下一步<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203838783-749309178.png"></p>
</li>
<li>
<p>安装页面<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203848493-1262222915.png"></p>
</li>
<li>
<p>更新包和重启虚拟机,选择完之后还要等一会<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122203900619-778358297.png"></p>
</li>
<li>
<p>经过漫长的等待出现下面界面直接按回车继续执行<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122204121479-1736389969.png"></p>
</li>
<li>
<p>出现下面界面摁回车就可以<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122204129769-1527705486.png"></p>
</li>
<li>
<p>执行上一步的话会出现下面界面使用用户密码登录<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122204153881-126172869.png"></p>
</li>
<li>
<p>使用用户名登陆上去就说明这台虚拟机已经可以工作了<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122204207560-1896360734.png"></p>
</li>
</ul>
<h2 id="三环境基础配置">三、环境基础配置</h2>
<table>
<thead>
<tr>
<th>节点</th>
<th>IP地址</th>
<th>主机名</th>
</tr>
</thead>
<tbody>
<tr>
<td>master</td>
<td>192.168.100.100</td>
<td>master</td>
</tr>
<tr>
<td>slave1</td>
<td>192.168.100.101</td>
<td>slave1</td>
</tr>
<tr>
<td>slave2</td>
<td>192.168.100.102</td>
<td>slave2</td>
</tr>
</tbody>
</table>
<h3 id="1配置静态iphosts文件克隆虚拟机更改主机名">1.配置静态IP、hosts文件、克隆虚拟机、更改主机名</h3>
<blockquote>
<p>在配置静态IP之前要看一下VMware虚拟网卡的网段<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122205227920-1557967824.png"></p>
</blockquote>
<ul>
<li>配置静态IP</li>
</ul>
<pre><code>cd /etc/netplan
ls
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122205300063-18738512.png"></p>
<ul>
<li>查看完配置文件,使用 vi 进入配置文件</li>
</ul>
<pre><code>sudo vi 00-installer-config.yaml
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122205311135-759876044.png"></p>
<ul>
<li>进行配置</li>
</ul>
<blockquote>
<p>vi 编辑器刚进入的时候默认是命令模式,要按一下 i 进入编辑模式。如果编辑完成想要退出,首先先按一下Esc到命令模式然后输如 <code>:wq!</code><br>
保存退出,如果不想保存退出就使用<code>:q!</code>命令。</p>
</blockquote>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122205454816-1881444053.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122205508882-1542067999.png"></p>
<ul>
<li>退出之后启动网卡</li>
</ul>
<pre><code>sudo netplan apply
ip a 查看IP的命令
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122205750508-300438229.png"></p>
<ul>
<li>配置hosts文件</li>
</ul>
<blockquote>
<p>hosts文件是本地域名解析,一个本地的DNS。它将IP地址和主机名相互解析</p>
</blockquote>
<pre><code>也是使用vi 编辑器进行编辑
vi/etc/hosts
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122205828553-1251297255.png"></p>
<ul>
<li>克隆虚拟机</li>
</ul>
<blockquote>
<p>先关闭master虚拟机然后点击虚拟机-----管理----克隆----下一步----下一步----选择创建完全克隆----下一步----更改虚拟机名称为slave1,位置自己选择即可。点击完成。即可看到VMware里多了一台名为slave1的虚拟机。slave2操作相同,就是虚拟机名称改为slave2即可。创建完如下图:</p>
</blockquote>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122205957811-2011848466.png"></p>
<ul>
<li>配置slave1和slave2</li>
</ul>
<blockquote>
<p>注意此时slave1和slave2虚拟机是克隆的,所以说配置文件和master是完全相同的,登录的话也是master的用户和密码(用户:hadoop密码:你自己设置的)登录上咱们要给他更改一下主机名和IP地址。打开slave1、slave2虚拟机进行以下操作:</p>
</blockquote>
<p>对slave1虚拟机进行操作的命令,操作的时候会让你输入密码<br>
就输入hadoop用户的密码</p>
<pre><code>hostnamectl set-hostname slave1 这个命令是永久更改主机名
sudo login 执行完这个命令会让你重新登录以下直接hadoop用户登录
</code></pre>
<p>对slave2虚拟机进行相同操作</p>
<pre><code>hostnamectl set-hostname slave2 注意这里是slave2
sudo login
</code></pre>
<p>更改slave1的IP地址</p>
<pre><code>vi /etc/netplan/00-installer-config.yaml
sudo netplan apply 配置完启动一下网络服务
ip a 查看一下是否配置成功
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210055907-266375906.png"></p>
<ul>
<li>更改slave2的IP地址</li>
</ul>
<blockquote>
<p>操作跟slave1命令一样,把 0 改成 2 保存退出即可,也要使用<code>sudo netplan apply</code><br>
命令启动一下网络服务。使用<code>ip a</code>查看一下是否配置成功</p>
</blockquote>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210110614-1024031152.png"></p>
<h3 id="2配置ssh免密登录">2.配置ssh免密登录</h3>
<pre><code>ssh-keygen -t rsa 每台机器都要执行这个命令,一路回车就可以了
</code></pre>
<ul>
<li>执行完上面的命令,会发现用户目录下有一个<code>.ssh</code>的目录,使用下面的命令查看一下</li>
</ul>
<pre><code>cd ~/.ssh/
ls
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210125646-740353240.png"></p>
<blockquote>
<p>现在在master节点touch一个名为authorized_keys的文件然后使用cat命令将master的公钥追加到这个文件里。命令如下:</p>
</blockquote>
<pre><code>touch authorized_keys
cat id_rsa.pub >> authorized_keys
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210144985-478969562.png"></p>
<blockquote>
<p>然后将slave1的公钥使用<code>scp</code>命令复制到master节点上</p>
</blockquote>
<pre><code>scp ~/.ssh/id_rsa.pub hadoop@msater:~/
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210257511-1331287933.png"></p>
<ul>
<li>
<p>可以看到master节点用户命令下多了一个id_rsa_pub的文件<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210314937-384144559.png"></p>
</li>
<li>
<p>同样使用<code>cat</code>命令将slave1的公钥追加到authorized_keys文件里</p>
</li>
</ul>
<pre><code>cat id_rsa_pub >> .ssh/authorized_keys
cat .ssh/authorized_keys
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210323842-1589260462.png"></p>
<blockquote>
<p>使用相同的命令将slave2的公钥传到master节点里并写入authorized_keys文件里</p>
</blockquote>
<pre><code>scp /home/hadoop/.ssh/id_rsa.pub hadoop@master:~/ 在slave2里执行
</code></pre>
<blockquote>
<p>(这里说明一下执行完上面这个命令会把之前咱们传的slave1的公钥文件覆盖掉,没什么影响。在master节点里执行下面的命令)</p>
</blockquote>
<pre><code>cat id_rsa_pub >> .ssh/authorized_keys
cat .ssh/authorized_keys
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210339257-1679453511.png"></p>
<blockquote>
<p>然后使用scp命令将master节点里的authorized_keys文件分别上传到slave1和slave2节点的.ssh/目录下</p>
</blockquote>
<pre><code>scp /home/hadoop/.ssh/authorized_keys hadoop@slave1:~/.ssh/
scp /home/hadoop/.ssh/authorized_keys hadoop@slave2:~/.ssh/
</code></pre>
<ul>
<li>验证ssh免密登录</li>
</ul>
<pre><code>ssh slave1 远程登录slave1命令,如果想登录其他节点,将slave1改成其他主机的主机名即可
exit 这个是退出命令
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210413638-841460151.png"></p>
<h3 id="3上传并解压jdkhadoop压缩包">3.上传并解压JDK、Hadoop压缩包</h3>
<ul>
<li>使用Xftp软件进行上传</li>
</ul>
<blockquote>
<p>注意:使用Xftp之前要确保宿主机(就是自己的电脑)和虚拟机相互通信。</p>
</blockquote>
<ul>
<li>点击【连接】会出现下面界面<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122210759318-561609651.png"></li>
</ul>
<blockquote>
<p>出现下面界面,咱们可以直接把左面电脑里的文件拖到右面的虚拟机里。当然虚拟机里的文件也可以直接拖到自己电脑里。</p>
</blockquote>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211331562-1699831671.png"></p>
<ul>
<li>
<p>将hadoop、jdk压缩文件拖到虚拟机里<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211340433-157918042.png"></p>
</li>
<li>
<p>也可以到master用户目录下查看<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211353538-1817471968.png"></p>
</li>
<li>
<p>解压hadoop、jdk</p>
</li>
</ul>
<pre><code>sudo tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/ -C参数是指定解压到哪个目录下
sudo tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/local/
cd /usr/local/ 到这个目录下
ls 查看一下
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211417991-1387420678.png"></p>
<ul>
<li>给这两个权限,归hadoop用户所有</li>
</ul>
<pre><code>sudo chown -R hadoop hadoop-2.7.7/
sudo chown -R hadoop jdk1.8.0_251
ll 查看一下
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211513664-2116710442.png"></p>
<h3 id="4添加环境变量">4.添加环境变量</h3>
<pre><code>vi .bashrc 在这个文件最后添加如下内容,三台机器都需要添加。
source .bashrc 添加完成之后执行这个条命令,让其生效。
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211547610-1523035253.png"></p>
<ul>
<li>验证一下是否添加成功</li>
</ul>
<pre><code>java -version
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211651027-1272662142.png"></p>
<h2 id="四配置hadoop文件">四、配置Hadoop文件</h2>
<ul>
<li>首先进入存放Hadoop配置文件的目录</li>
</ul>
<pre><code>cd /usr/local/hadoop-2.7.7/etc/hadoop/ 进入此目录
ls 查看一下
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211700901-712241528.png"></p>
<h3 id="1配置核心组件core-sitexml">1.配置核心组件core-site.xml</h3>
<pre><code>vi core-site.xml 打开文件,添加以下内容
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.100.100:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdata</value>
</property>
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211717178-281136247.png"></p>
<h3 id="2配置hadoop-envsh">2.配置hadoop-env.sh</h3>
<pre><code>vi hadoop-env.sh 添加JDK的安装目录
export JAVA_HOME=/usr/local/jdk1.8.0_251
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211731084-94239262.png"></p>
<h3 id="3配置hdfs-sitexml">3.配置hdfs-site.xml</h3>
<pre><code>vi hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211741377-659424931.png"></p>
<h3 id="4配置yarn-sitexml">4.配置yarn-site.xml</h3>
<pre><code>vi yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.100.100:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.100.100:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.100.100:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.100.100:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.100.100:18088</value>
</property>
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211752025-557321439.png"></p>
<h3 id="5配置mapred-sitexml">5.配置mapred-site.xml</h3>
<pre><code>使用cp命令复制mapred-site.xml.template文件为mapred-site.xml
cp mapred-site.xml.templatemapred-site.xml 使用cp命令进行复制
vi mapred-site.xml 添加以下内容
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211814169-1759249070.png"></p>
<h3 id="6配置yarn-envsh">6.配置yarn-env.sh</h3>
<pre><code>vi yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_251
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211825109-283383805.png"></p>
<h2 id="五复制文件">五、复制文件</h2>
<h3 id="1使用scp命令将hadoopjdk文件复制到slave1和slave2节点上">1.使用scp命令将hadoop、jdk文件复制到slave1和slave2节点上。</h3>
<pre><code>在master节点执行下面命令
sudo scp -r /usr/local/hadoop-2.7.7 hadoop@slave1:~/
sudo scp -r /usr/local/hadoop-2.7.7 hadoop@slave2:~/
sudo scp -r /usr/local/jdk1.8.0_251 hadoop@slave1:~/
sudo scp -r /usr/local/jdk1.8.0_251 hadoop@slave2:~/
此时已经将这两个文件复制到slave1、slave2节点的用户目录下
</code></pre>
<h3 id="2移动文件">2.移动文件</h3>
<pre><code>在slave1、slave2节点执行下面命令
sudo mv /home/hadoop/hadoop-2.7.7/ /usr/local/
sudo mv /home/hadoop/jdk1.8.0_251/ /usr/local/
source .bashrc 生效一下环境变量,每台节点都要执行。
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211854789-680061704.png"></p>
<h2 id="六启动集群">六、启动集群</h2>
<h3 id="1在master节点格式化namenode">1.在master节点格式化namenode</h3>
<pre><code>hdfs namenode -format 进行格式化
</code></pre>
<h3 id="2start-allsh启动集群">2.start-all.sh启动集群</h3>
<pre><code>start-all.sh
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211935402-1777532773.png"></p>
<ul>
<li>
<p>查看slave1节点的进程<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211946336-328120371.png"></p>
</li>
<li>
<p>查看slave2节点的进程<br>
<img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122211955178-2146387833.png"></p>
</li>
</ul>
<h3 id="3通过浏览器访问ui-集群信息图">3.通过浏览器访问UI 集群信息图</h3>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122212041202-1866303137.png"></p>
<h3 id="4通过浏览器访问yarn-web-信息图">4.通过浏览器访问Yarn web 信息图</h3>
<p><img src="https://img2020.cnblogs.com/blog/2205265/202011/2205265-20201122212109025-1488429969.png"></p>
<p>至此Hadoop完全分布式搭建完成</p><br><br>
来源:https://www.cnblogs.com/ke-wu-a/p/14021591.html
頁:
[1]