腾讯云部署hadoop

1.申请2-3台腾讯云服务器

安全组编辑规则,允许ALL。这样hadoop集群服务器才能访问。

2.安装JDK服务器

jdk配置 **master,slave机器都要装jdk**

-(1)上传JDK安装包到虚拟机/opt目录
-(2)进入/opt目录,执行命令“rpm -ivh jdk-8u151-linux-x64.rpm”安装JDK(注意,自己手动输入-ivh命令)
-(3)在vi /etc/profile添加

export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
执行source /etc/profile 使配置生效

-(4)验证JDK是否配置成功,执行命令“java -version”

3.设置SSH无密码登录

ssh免密登录,很重要,否则不同机器无法访问 (1)云环境下主机ip设置,配置ip和master映射
  • master节点,vi /etc/hosts,修改后,执行source /etc/hosts,具体参考这个网址
master内网云ip master
slave1公网ip slave1

修改主机名hostnamectl set-hostname master ,slave机器同操作。reboot机器可以看到主机名更改

  • slave节点,vi /etc/hosts,修改后,执行source /etc/hosts
master内网云ip master
slave1公网ip slave1

(2)生成私有密钥id_rsa和公有密钥id_rsa.pub两个文件ssh-keygen -t rsa #接着按三次Enter键,ssh-keygen用来生成RSA类型的密钥以及管理该密钥,参数“-t”用于指定要创建的SSH密钥的类型为RSA
(3)远程负责到各个机器

ssh-copy-id -i /root/.ssh/id_rsa.pub master//依次输入yes,123456(root用户的密码)
ssh-copy-id -i /root/.ssh/id_rsa.pub slave1
ssh-copy-id -i /root/.ssh/id_rsa.pub slave2

(4)验证是否设置无密码登录,依次输入

ssh slave1
ssh slave2
ssh slave3

注意,ssh配置存在问题,slave机器出现authorized_keys拒绝访问问题。由于你重新生成公钥,再次写入authorized_keys,会被拒绝,可以在slave机器上,用chmod修改文件权限,也会拒绝可以用如下命令解决

 进入slave机器的cd /root/.ssh/  目录,执行下面权限修改
  chattr -i authorized_keys #对文件解锁
  chmod 600 authorized_keys #修改文件为可读写权限
  进入master机器,执行ssh-copy-id -i /root/.ssh/id_rsa.pub slave1 #slave生成新的公钥

4.配置Hadoop集群

配置Hadoop集群 1.通过xmanager的Xftp上传hadoop-2.6.5.tar.gz文件到/opt目录

2.解压缩hadoop-2.6.5.tar.gz 文件,tar -zxf hadoop-2.6.5.tar.gz -C /usr/local ,解压后即可,看到/usr/local/hadoop-2.6.5文件夹

3.配置Hadoop,进入目录:cd /usr/local/hadoop-2.6.5/etc/hadoop/

4.依次修改下面的文件:

(1) vi core-site.xml

<configuration>
    <property>
    <name>fs.defaultFS</name>  
      <value>hdfs://master:8020</value>  
      </property>  
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/var/log/hadoop/tmp</value>
    </property>
</configuration>

(2)vi hadoop-env.sh ,export JAVA_HOME=/usr/java/jdk1.8.0_151
(3) vi hdfs-site.xml
注意:/data/hadoop/hdfs/name/里面存放名称节点信息。/data/hadoop/hdfs/data/存放datanode节点信息

<configuration>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/hadoop/hdfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///data/hadoop/hdfs/data</value>
</property>
<property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>master:50090</value>
</property>
<property>
     <name>dfs.replication</name>
     <value>3</value>
</property>
</configuration>

注意:replication的value表示有几台slave,1台就写1
(4) mapred-site.xml,没有这个文件,执行复制 cp mapred-site.xml.template mapred-site.xml

<configuration>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!-- jobhistory properties -->
<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

<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>    
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>${yarn.resourcemanager.hostname}:8032</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>${yarn.resourcemanager.hostname}:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>${yarn.resourcemanager.hostname}:8088</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.https.address</name>
    <value>${yarn.resourcemanager.hostname}:8090</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>${yarn.resourcemanager.hostname}:8031</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>${yarn.resourcemanager.hostname}:8033</value>
  </property>
  <property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>/data/hadoop/yarn/local</value>
  </property>
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/data/tmp/logs</value>
  </property>
<property> 
 <name>yarn.log.server.url</name> 
 <value>http://master:19888/jobhistory/logs/</value>
 <description>URL for job history server</description>
</property>
<property>
   <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
  </property>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
      <value>org.apache.hadoop.mapred.ShuffleHandler</value>
      </property>
<property>  
        <name>yarn.nodemanager.resource.memory-mb</name>  
        <value>2048</value>  
 </property>  
 <property>  
        <name>yarn.scheduler.minimum-allocation-mb</name>  
        <value>512</value>  
 </property>   
 <property>  
        <name>yarn.scheduler.maximum-allocation-mb</name>  
        <value>4096</value>  
 </property> 
 <property> 
    <name>mapreduce.map.memory.mb</name> 
    <value>2048</value> 
 </property> 
 <property> 
    <name>mapreduce.reduce.memory.mb</name> 
    <value>2048</value> 
 </property> 
 <property> 
    <name>yarn.nodemanager.resource.cpu-vcores</name> 
    <value>1</value> 
 </property>
</configuration>

(6)vi yarn-env.sh, export JAVA_HOME=/usr/java/jdk1.8.0_151

5.vi slaves,删除localhost,添加:

slave1
slave2
slave3

6.拷贝hadoop安装文件到集群slave节点
scp -r /usr/local/hadoop-2.6.5 slave1:/usr/local
scp -r /usr/local/hadoop-2.6.5 slave2:/usr/local
scp -r /usr/local/hadoop-2.6.5 slave3:/usr/local

7.在/etc/profile添加Hadoop路径

export HADOOP_HOME=/usr/local/hadoop-2.6.5
export PATH=$HADOOP_HOME/bin:$PATH

执行source /etc/profile使修改生效

8.格式化NameNode,进入目录,`cd /usr/local/hadoop-2.6.5/bin',执行格式化,'./hdfs namenode -format'

格式化不在改目录,可以用hdfs命令:hdfs namenode -format

9.启动集群,进入目录,cd /usr/local/hadoop-2.6.5/sbin
执行启动:

./start-dfs.sh
./start-yarn.sh
./mr-jobhistory-daemon.sh start historyserver

或者./start-all.sh

关闭集群的命令。./stop-all.sh

10.使用jps,查看进程
master节点信息如下

[root@master sbin]# jps
1765 NameNode
1929 SecondaryNameNode
2378 JobHistoryServer
2412 Jps
2077 ResourceManager

slave节点jps信息如下:

[root@slave1 ~]# jps
1844 Jps
1612 DataNode
1711 NodeManager

11.在Windows下C:\Windows\System32\drivers\etc\hosts添加IP映射

公网腾讯云ip master master.centos.com
公网腾讯云ip slave1 slave1.centos.com
公网腾讯云ip slave2 slave2.centos.com
公网腾讯云ip slave3 slave3.centos.com
  1. 浏览器查看:
http://master:50070
http://master:8088

5.常见问题

5.1 datanode、namenode 无法启动

cd /usr/local/hadoop-2.6.5/logs
ls #查找datanode的log文件查看
cat hadoop-root-datanode-VM-0-14-centos.log #查找cid值,复制后面内容
master节点进入vi /data/hadoop/hdfs/name/current/VERSION 更改clusterID为新的内容。
slave节点进入vi /data/hadoop/hdfs/data/current/VERSION 更改clusterID为新的内容。
  • 或者删除namenode,datanode下current文件夹.
1.master节点操作
cd /data/hadoop/hdfs/name/
rm -rf current
2.slave节点操作
cd /data/hadoop/hdfs/data/
rm -rf current
集群关闭再dfs命令格式化那么node节点:`hdfs namenode -format `,重启集群则可以看到。

5.2 mapreduce job卡住问题

  • 测试mapreduce 样例
    hadoop jar /usr/local/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /test/bb.txt /test/wd1
  • kill MapReduce程序命令yarn application -kill application_id
  • 打开mapreduce日志文件:进入$HADOOP_HOME/sbin/ ,执行命令 ./mr-jobhistory-daemon.sh start historyserver,再进入http://master:50070/logs/,就可以看到MapReduce日志。

6.参考资料

-亚马逊云部署hadoop

posted @ 2020-09-10 15:33  林老师dsc  阅读(427)  评论(0编辑  收藏  举报