Hadoop安装与集群部署

Hadoop安装与集群部署

系统环境:CentOS 7

环境配置:

SSH:

1.SSH的安装:

ContOS默认已经安装了SSH client、SSH server,执行以下命令进行校验:

rpm -qa | grep ssh

如果返回的结果如下图所示包含了SSH client 跟 SSH server,则不需要再安装。

          

如果需要安装,则可以通过yum进行安装:

sudo yum install openssh-clients

sudo yum install openssh-server

2.测试SSH是否可用:

  ssh localhost

此时会有提示(SSH首次登陆提示),输入yes。然后按提示输入密码,就可以登陆到本机。

3.配置无密码登录:

首先输入 exit 退出刚才的ssh,然后利用ssh-keygen生成密钥,并将密钥加入到授权中:

exit # 退出刚才的 ssh localhost

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

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

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

chmod 600 ./authorized_keys    # 修改文件权限

4.验证是否实现无密码登录:

使用ssh localhost 命令,无需输入密码就可以直接登录了,如下图所示:

         

至此SSH及无密码登录配置完毕。

    

java环境:

1.安装jdk:     

  sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

         

2.配置环境变量:

a.通过执行rpm -ql java-1.8.0-openjdk-devel | grep ‘/bin/javac’ 得到OpenJDK的安装位置:“/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64/bin/javac”去除末尾的“/bin/javac”,剩下的就是正确的位置了;

               

 

b.在~/.bashrc中设置JAVA_HOME环境变量执行命令:

  vi ~/.bashrc

         

  c.在文件的最后添加如下一行并保存:

  export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64

  d.执行如下代码使环境变量生效:

source ~/.bashrc    # 使变量设置生效

3.验证环境变量是否配置正确:

echo $JAVA_HOME     # 检验变量值

java -version

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

如果设置正确,$JAVA_HOME/bin/java -version会输出java的版本信息 且和 java -version 的输出结果一样,如下图所示:

至此,Hadoop所需的Java运行环境就安装好了。     

Hadoop2的安装:

1.下载Hadoop:

<1>打开下载地址https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/,如下图

          

<2>点击stable下载稳定版本,打开如下页面:

            

<3> 右键复制链接地址,得到“hadoop-2.7.3.tar.gz”的 下载链接“https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/hadoop-2.7.3.tar.gz

<4>得到下载地址之后,我们准备将hadoop下载到 /usr/local/文件夹下,执行命令 cd /usr/local/ ,然后执行命令 sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/hadoop-2.7.3.tar.gz  (如果没有安装wget,先执行 sudo yum install wget 安装wget)

             

<5>将下载的hadoop-2.7.3.tar.gz进行解压,执行命令:

sudo mv ./hadoop-2.7.3/ ./hadoop    # 解压到文件

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

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

                   

         

<6>Hadoop解压后即可使用,输入如下命令来检查Hadoop是否可用,如果现实Hadoop版本信息,则表示安装成功

cd /usr/local/hadoop

./bin/hadoop version

如下图表示成功安装:

        

配置集群/分布式环境:

先关闭防火墙:

CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。

CentOS 7 执行如下命令:

systemctl stop firewalld.service    # 关闭firewall

systemctl disable firewalld.service # 禁止firewall开机启动

配置集群/分布式环境:

集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。

先执行 cd /usr/local/hadoop/etc/hadoop 进入对应文件夹下

1、文件slaves,将文件中原来的localhost删除,只添加一行内容:Slave1

vi slaves

              

2、执行 vi core-site.xml ,将文件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>

     

3、执行 vi hdfs-site.xml ,修改文件hdfs-site.xml,dfs.replication一般设置为3,但我们只有一个Slave节点,所以dfs.replication的值设置为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>

4、文件mapred-site.xml(可能需要先重命名,默认文件名为mapred-site.xml.template,执行mv mapred-site.xml.template mapred-site.xml 进行重命名,

然后执行 vi 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>

5、执行 vi yarn-site.xml 修改文件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>

6、配置好后,将Master上的/usr/local/Hadoop文件夹复制到各个节点上。如果之前有跑过伪分布模式,建议在切换到集群模式前先删除之前的临时文件。

在Master节点上执行:

  cd /usr/local

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

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

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

cd ~

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

在Slave1节点上执行:

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

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

sudo chown -R hadoop /usr/local/hadoop

同样,如果有其他Slave节点,也要执行将hadoop.master.tar.gz传输到Slave节点解压文件的操作。

7、首次启动需要先在Master节点执行NameNode的格式化:

cd /usr/local/hadoop/

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

8、启动hadoop,启动需要在Master节点上进行:

./sbin/start-dfs.sh

./sbin/start-yarn.sh

./sbin/mr-jobhistory-daemon.sh start historyserver

9.验证:

通过命令jps可以查看各个节点所启动的进程。正确的话,在Master节点上可以看到NameNode、ResourceManager、SecondrryNameNode

、JobHistoryServer。在Slave节点上可以看到DataNode和NodeManager进程。

缺少任一进程都表示出错。另外还需要在Master节点上

通过命令 ./bin/hdfs dfsadmin -report查看DataNode是否正常启动,如果Live datanodes不为0,

则说明集群启动成功。

Hadoop的使用:

grep简单实例:

1.先创建HDFS上的用户目录:

hdfs dfs -mkdir -p /user/hadoop 

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

hdfs dfs -mkdir input 

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

3.通过查看DataNode的状态(占用大小有改变),证实输入文件确实已经复制到了DataNode中,如下所示:

          

     

4.运行MapReduce作业:

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

运行时的输出信息会显示Job进度。如下图所示:

          

同样可以通过Web界面查看任务进度http://master:8088/cluster,在Web界面点击“Tracking UI”这一列的History连接可以看到任务的运行信息,如图所示:

       

5.执行完毕后的输出结果:

./bin/hdfs dfs -cat output/*

               

          

6.关闭Hadoop集群也是在Master节点上执行的:

stop-yarn.sh

stop-dfs.sh

mr-jobhistory-daemon.sh stop historyserver

发表评论