天天看点

hadoop&spark安装(上)

硬件环境:

hddcluster1 10.0.0.197 redhat7

hddcluster2 10.0.0.228 centos7  这台作为master

hddcluster3 10.0.0.202 redhat7

hddcluster4 10.0.0.181 centos7

软件环境:

关闭所有防火墙firewall

openssh-clients

openssh-server

java-1.8.0-openjdk

java-1.8.0-openjdk-devel

hadoop-2.7.3.tar.gz

流程:

选定一台机器作为 Master

在 Master 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境

在 Master 节点上安装 Hadoop,并完成配置

在其他 Slave 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境

将 Master 节点上的 /usr/local/hadoop 目录复制到其他 Slave 节点上

在 Master 节点上开启 Hadoop

<code>#节点的名称与对应的 IP 关系</code>

<code>[hadoop@hddcluster2 ~]$ </code><code>cat</code> <code>/etc/hosts</code>

<code>127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4</code>

<code>::1         localhost localhost.localdomain localhost6 localhost6.localdomain6</code>

<code>10.0.0.228      hddcluster2</code>

<code>10.0.0.197      hddcluster1</code>

<code>10.0.0.202      hddcluster3</code>

<code>10.0.0.181      hddcluster4</code>

<code>创建hadoop用户</code>

<code>su</code>  <code># 上述提到的以 root 用户登录</code>

<code>useradd</code> <code>-m hadoop -s </code><code>/bin/bash</code>   <code># 创建新用户hadoop</code>

<code>passwd</code> <code>hadoop                     </code><code>#设置hadoop密码</code>

<code>visudo                            </code><code>#root ALL=(ALL) ALL 这行下面添加hadoop ALL=(ALL) ALL</code>

<code>#登录hadoop用户,安装SSH、配置SSH无密码登陆</code>

<code>[hadoop@hddcluster2 ~]$ rpm -qa | </code><code>grep</code> <code>ssh</code>

<code>[hadoop@hddcluster2 ~]$ </code><code>sudo</code> <code>yum </code><code>install</code> <code>openssh-clients</code>

<code>[hadoop@hddcluster2 ~]$ </code><code>sudo</code> <code>yum </code><code>install</code> <code>openssh-server</code>

<code>[hadoop@hddcluster2 ~]$</code><code>cd</code> <code>~/.</code><code>ssh</code><code>/     </code><code># 若没有该目录,请先执行一次ssh localhost</code>

<code>[hadoop@hddcluster2 ~]$</code><code>ssh</code><code>-keygen -t rsa              </code><code># 会有提示,都按回车就可以</code>

<code>[hadoop@hddcluster2 ~]$</code><code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub localhost </code><code># 加入授权</code>

<code>[hadoop@hddcluster2 ~]$</code><code>chmod</code> <code>600 .</code><code>/authorized_keys</code>    <code># 修改文件权限</code>

<code>[hadoop@hddcluster2 ~]$</code><code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub  hadoop@hddcluster1</code>

<code>[hadoop@hddcluster2 ~]$</code><code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub  hadoop@hddcluster3</code>

<code>[hadoop@hddcluster2 ~]$</code><code>ssh</code><code>-copy-</code><code>id</code> <code>-i ~/.</code><code>ssh</code><code>/id_rsa</code><code>.pub  hadoop@hddcluster4</code>

<code>#解压hadoop文件到/usr/local/hadoop</code>

<code>[hadoop@hddcluster2 ~]$</code><code>sudo</code> <code>tar</code> <code>-zxf hadoop-2.7.3.</code><code>tar</code><code>.gz -C </code><code>/usr/local/</code>

<code>[hadoop@hddcluster2 ~]$</code><code>sudo</code> <code>mv</code> <code>/usr/local/hadoop-2</code><code>.7.3 </code><code>/usr/local/hadoop</code>

<code>[hadoop@hddcluster2 ~]$</code><code>sudo</code> <code>chown</code> <code>-R hadoop:hadoop </code><code>/usr/local/hadoop</code>

<code>cd</code> <code>/usr/local/hadoop</code>

<code>.</code><code>/bin/hadoop</code> <code>version</code>

<code>#安装java环境</code>

<code>[hadoop@hddcluster2 ~]$</code><code>sudo</code> <code>yum </code><code>install</code> <code>java-1.8.0-openjdk java-1.8.0-openjdk-devel</code>

<code>[hadoop@hddcluster2 ~]$ rpm -ql java-1.8.0-openjdk-devel | </code><code>grep</code> <code>'/bin/javac'</code> 

<code>/usr/lib/jvm/java-1</code><code>.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64</code><code>/bin/javac</code>

<code>[hadoop@hddcluster2 ~]$ vim ~/.bashrc</code>

<code>export</code> <code>JAVA_HOME=</code><code>/usr/lib/jvm/java-1</code><code>.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64</code>

<code>export</code> <code>HADOOP_HOME=</code><code>/usr/local/hadoop</code>

<code>export</code> <code>HADOOP_INSTALL=$HADOOP_HOME</code>

<code>export</code> <code>HADOOP_MAPRED_HOME=$HADOOP_HOME</code>

<code>export</code> <code>HADOOP_COMMON_HOME=$HADOOP_HOME</code>

<code>export</code> <code>HADOOP_HDFS_HOME=$HADOOP_HOME</code>

<code>export</code> <code>YARN_HOME=$HADOOP_HOME</code>

<code>export</code> <code>HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME</code><code>/lib/native</code>

<code>export</code> <code>PATH=$PATH:$HADOOP_HOME</code><code>/sbin</code><code>:$HADOOP_HOME</code><code>/bin</code>

<code>export</code> <code>HADOOP_PREFIX=$HADOOP_HOME</code>

<code>export</code> <code>HADOOP_OPTS=</code><code>"-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"</code>

<code>#测试java环境</code>

<code>source</code> <code>~/.bashrc</code>

<code>java -version</code>

<code>$JAVA_HOME</code><code>/bin/java</code> <code>-version  </code><code># 与直接执行 java -version 一样</code>

<code>#修改hadoop文件配置</code>

<code>[hadoop@hddcluster2 hadoop]$ </code><code>pwd</code>

<code>/usr/local/hadoop/etc/hadoop</code>

<code>[hadoop@hddcluster2 hadoop]$ </code><code>cat</code> <code>core-site.xml</code>

<code>&lt;?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"UTF-8"</code><code>?&gt;</code>

<code>&lt;?xml-stylesheet </code><code>type</code><code>=</code><code>"text/xsl"</code> <code>href=</code><code>"configuration.xsl"</code><code>?&gt;</code>

<code>&lt;!--</code>

<code>  </code><code>Licensed under the Apache License, Version 2.0 (the </code><code>"License"</code><code>);</code>

<code>  </code><code>you may not use this </code><code>file</code> <code>except </code><code>in</code> <code>compliance with the License.</code>

<code>  </code><code>You may obtain a copy of the License at</code>

<code>    </code><code>http:</code><code>//www</code><code>.apache.org</code><code>/licenses/LICENSE-2</code><code>.0</code>

<code>  </code><code>Unless required by applicable law or agreed to </code><code>in</code> <code>writing, software</code>

<code>  </code><code>distributed under the License is distributed on an </code><code>"AS IS"</code> <code>BASIS,</code>

<code>  </code><code>WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</code>

<code>  </code><code>See the License </code><code>for</code> <code>the specific language governing permissions and</code>

<code>  </code><code>limitations under the License. See accompanying LICENSE </code><code>file</code><code>.</code>

<code>--&gt;</code>

<code>&lt;!-- Put site-specific property overrides </code><code>in</code> <code>this </code><code>file</code><code>. --&gt;</code>

<code>&lt;configuration&gt;</code>

<code>        </code><code>&lt;property&gt;</code>

<code>                </code><code>&lt;name&gt;fs.defaultFS&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;hdfs:</code><code>//hddcluster2</code><code>:9000&lt;</code><code>/value</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>/property</code><code>&gt;</code>

<code>                </code><code>&lt;name&gt;hadoop.tmp.</code><code>dir</code><code>&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;</code><code>file</code><code>:</code><code>/usr/local/hadoop/tmp</code><code>&lt;</code><code>/value</code><code>&gt;</code>

<code>                </code><code>&lt;description&gt;Abase </code><code>for</code> <code>other temporary directories.&lt;</code><code>/description</code><code>&gt;</code>

<code>&lt;</code><code>/configuration</code><code>&gt;</code>

<code>[hadoop@hddcluster2 hadoop]$ </code><code>cat</code> <code>hdfs-site.xml</code>

<code>                </code><code>&lt;name&gt;dfs.namenode.secondary.http-address&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;hddcluster2:50090&lt;</code><code>/value</code><code>&gt;</code>

<code>                </code><code>&lt;name&gt;dfs.replication&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;3&lt;</code><code>/value</code><code>&gt;</code>

<code>                </code><code>&lt;name&gt;dfs.namenode.name.</code><code>dir</code><code>&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;</code><code>file</code><code>:</code><code>/usr/local/hadoop/tmp/dfs/name</code><code>&lt;</code><code>/value</code><code>&gt;</code>

<code>                </code><code>&lt;name&gt;dfs.datanode.data.</code><code>dir</code><code>&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;</code><code>file</code><code>:</code><code>/usr/local/hadoop/tmp/dfs/data</code><code>&lt;</code><code>/value</code><code>&gt;</code>

<code>[hadoop@hddcluster2 hadoop]$ </code>

<code>[hadoop@hddcluster2 hadoop]$ </code><code>cat</code> <code>mapred-site.xml</code>

<code>&lt;?xml version=</code><code>"1.0"</code><code>?&gt;</code>

<code>                </code><code>&lt;name&gt;mapreduce.framework.name&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;yarn&lt;</code><code>/value</code><code>&gt;</code>

<code>                </code><code>&lt;name&gt;mapreduce.jobhistory.address&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;hddcluster2:10020&lt;</code><code>/value</code><code>&gt;</code>

<code>                </code><code>&lt;name&gt;mapreduce.jobhistory.webapp.address&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;hddcluster2:19888&lt;</code><code>/value</code><code>&gt;</code>

<code>[hadoop@hddcluster2 hadoop]$ </code><code>cat</code> <code>yarn-site.xml </code>

<code>&lt;!-- Site specific YARN configuration properties --&gt;</code>

<code>                </code><code>&lt;name&gt;yarn.resourcemanager.</code><code>hostname</code><code>&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;hddcluster2&lt;</code><code>/value</code><code>&gt;</code>

<code>                </code><code>&lt;name&gt;yarn.nodemanager.aux-services&lt;</code><code>/name</code><code>&gt;</code>

<code>                </code><code>&lt;value&gt;mapreduce_shuffle&lt;</code><code>/value</code><code>&gt;</code>

<code>[hadoop@hddcluster2 hadoop]$ </code><code>cat</code> <code>slaves </code>

<code>hddcluster1</code>

<code>hddcluster2</code>

<code>hddcluster3</code>

<code>hddcluster4</code>

<code>$</code><code>cd</code> <code>/usr/local</code>

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

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

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

<code>$</code><code>cd</code> <code>~</code>

<code>$</code><code>scp</code> <code>.</code><code>/hadoop</code><code>.master.</code><code>tar</code><code>.gz hddcluster1:</code><code>/home/hadoop</code>

<code>$</code><code>scp</code> <code>.</code><code>/hadoop</code><code>.master.</code><code>tar</code><code>.gz hddcluster3:</code><code>/home/hadoop</code>

<code>$</code><code>scp</code> <code>.</code><code>/hadoop</code><code>.master.</code><code>tar</code><code>.gz hddcluster4:</code><code>/home/hadoop</code>

<code>在salve节点上操作,安装软件环境并配置好.bashrc</code>

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

<code>sudo</code> <code>chown</code> <code>-R hadoop </code><code>/usr/local/hadoop</code>

<code>[hadoop@hddcluster2 ~]$hdfs namenode -</code><code>format</code>       <code># 首次运行需要执行初始化,之后不需要</code>

<code>接着可以启动 hadoop 了,启动需要在 Master 节点上进行启动命令:</code>

<code>$start-dfs.sh</code>

<code>$start-yarn.sh</code>

<code>$mr-jobhistory-daemon.sh start historyserver</code>

<code>通过命令 jps 可以查看各个节点所启动的进程。正确的话,</code>

<code>在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,</code>

<code>另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。</code>

<code>[hadoop@hddcluster2 ~]$ hdfs dfsadmin -report</code>

<code>Configured Capacity: 2125104381952 (1.93 TB)</code>

<code>Present Capacity: 1975826509824 (1.80 TB)</code>

<code>DFS Remaining: 1975824982016 (1.80 TB)</code>

<code>DFS Used: 1527808 (1.46 MB)</code>

<code>DFS Used%: 0.00%</code>

<code>Under replicated blocks: 0</code>

<code>Blocks with corrupt replicas: 0</code>

<code>Missing blocks: 0</code>

<code>Missing blocks (with replication factor 1): 0</code>

<code>-------------------------------------------------</code>

<code>Live datanodes (4):</code>

<code>也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http:</code><code>//hddcluster2</code><code>:50070/。如果不成功,可以通过启动日志排查原因。</code>

<code>在 Slave 节点操作可以看到 DataNode 和 NodeManager 进程</code>

<code>测试hadoop分布式实例</code>

<code>首先创建 HDFS 上的用户目录:</code>

<code>hdfs dfs -</code><code>mkdir</code> <code>-p </code><code>/user/hadoop</code>

<code>将 </code><code>/usr/local/hadoop/etc/hadoop</code> <code>中的配置文件作为输入文件复制到分布式文件系统中:</code>

<code>hdfs dfs -</code><code>mkdir</code> <code>input</code>

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

<code>通过查看   的DataNode 的状态(占用大小有改变),输入文件确实复制到了 DataNode 中。</code>

<code>接着就可以运行 MapReduce 作业了:</code>

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

<code>等待执行完毕后的输出结果:</code>

<code>hadoop启动命令:</code>

<code>start-dfs.sh</code>

<code>start-yarn.sh</code>

<code>mr-jobhistory-daemon.sh start historyserver</code>

<code>hadoop关闭命令:</code>

<code>stop-dfs.sh</code>

<code>stop-yarn.sh</code>

<code>mr-jobhistory-daemon.sh stop historyserver</code>

PS:如果集群有一两台无法启动的话,先尝试一下删除hadoop临时文件

cd /usr/local

sudo rm -r ./hadoop/tmp

sudo rm -r ./hadoop/logs/*

然后执行

hdfs namenode -format

再启动

本文参考了一下网站并实验成功:

http://www.powerxing.com/install-hadoop-cluster/ 本文转自 yanconggod 51CTO博客,原文链接: http://blog.51cto.com/yanconggod/1884998