专栏首页运维杂家技术分享COS助力HADOOP轻松实现数据存储
原创

COS助力HADOOP轻松实现数据存储

一  COS助力HADOOP轻松实现数据存储

通过学习本文您将了解到如下内容:

1.1 如何快速搭建hadoop分布式集群。

1.2 如何在hadoop集群上实现简单的数据处理,通过 wordcount 实现测试。

1.3 hadoop如何从腾讯云cos提取和存储数据。

二 基础信息规划

2.1 业务拓扑&网络安全策略

2.1.1 准备好一个VPC网络

2.1.2 在VPC内部创建4台服务器

2.1.3 4台服务器在同一个安全组内

2.1.4 安全组侧率允许内网互相访问,允许特点源IP访问hadoop集群(允许你希望访问集群的IP访问,这样可以避免部分安全问题)

2.2 版本信息

2.2.1 操作系统版本 centos 7.2 x64

2.2.2 java jdk 版本 jdk-8u144

2.2.3 hadoop 版本 2.8.5

2.2.4 hadoop-cos 组件版本 2.8.5

2.3 节点规划

2.3.1 NameNode(nn)SecondaryNameNode(snn) ResourceManager(rm) 三种角色安装在master服务器上,备注:如果是生产环境,这三个角色要分开部署。

2.3.2 DataNode(dn) NodeManager( nm) 三台

三 环境配置

3.1 基础环境配置

3.1.1 在CVM WEB 控制台获取每台CVM内网IP

3.1.2 使用ssh协议登录master服务器

3.1.3 在master服务器上执行 vim /etc/hosts 辑配置文件内容如下

192.x.x.x master
192.x.x.x dn-1
192.x.x.x dn-2
192.x.x.x dn-3

备注:记得设置每台服务器的主机名

3.1.4 在master 上使用ping 命令分别ping master dn-1 dn-2 dn-3 

ping master
ping dn-1 

3.1.5 复制master 上/etc/hosts文件到其它服务器 

for i in 1 2 3; do scp /etc/hosts  dn-${i}:/etc/hosts ; done

备注:您也可以手动复制

3.2 java环境配置

3.2.1 在每台服务器上执行

cd /tmp && wget https://swpkg-1251908826.cos.ap-beijing.myqcloud.com/java/jdk-8u144-linux-x64.rpm

3.2.2 在每台服务器上安装jdk

rpm -ivh jdk-8u144-linux-x64.rpm

3.2.3 在master上设置java 环境变量 vim /etc/profile.d/java.sh 内容如下

export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=/usr/java/jdk1.8.0_144/jre
export PATH=$PATH:/usr/java/jdk1.8.0_144/bin
export CLASSPATH=./:/usr/java/jdk1.8.0_144/lib:/usr/java/jdk1.8.0_144/jre/lib

3.2.4 复制master上java.sh 配置文件到每台服务器 

for i in 1 2 3; do scp /etc/profile.d/java.sh dn-${i}:/etc/profile.d/java.sh; done

3.2.5 在每台服务器上加载java环境变量 

source /etc/profile.d/java.sh

3.3 hadoop环境配置

3.3.1 在master 编辑vim /etc/profile.d/hadoop.sh 内容如下

export HADOOP_HOME=/bdapps/hadoop
export HADOOP_PREFIX=/bdapps/hadoop
export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

3.3.2 在master上操作复制hadoop.sh配置文件到每台hadoop节点上

for i in 1 2 3; do scp /etc/profile.d/hadoop.sh  dn-${i}:/etc/profile.d/hadoop.sh ; done

3.3.4 在每台服务器上加载hadoop环境变量

source /etc/profile.d/hadoop.sh  && export | grep HADOOP

3.3.5 在每台服务器上执行下载Hadoop

cd /tmp && wget https://swpkg-1251908826.cos.ap-beijing.myqcloud.com/hadoop/hadoop-2.8.5.tar.gz

3.4 用户配置

3.4.1 在每台服务器上配置hadoop用户

useradd hadoop && echo 'hadoop' | passwd --stdin hadoop && for i in 1 2 3; do ssh root@dn-${i} "useradd hadoop && echo 'hadoop' | passwd --stdin hadoop && id hadoop"; done

3.5 设置hadoop用户秘钥登录集群每个节点

3.5.1 在master执行

su - hadoop

3.5.2 生成证书无密码

ssh-keygen -t rsa -P ''

3.5.3 在master上执行命令复制秘钥到每台服务器

for i in 1 2 3; do ssh-copy-id -i .ssh/id_rsa.pub hadoop@dn-${i}; done

3.6 使用root在master创建hadoop工作目录

mkdir -pv  /bdapps /data/hadoop/hdfs/{nn,snn,dn} && for i in 1 2 3; do ssh root@dn-${i} "mkdir -pv  /bdapps /data/hadoop/hdfs/{nn,snn,dn}"; done
chown -R hadoop:hadoop /data/hadoop/hdfs/ && for i in 1 2 3; do ssh root@dn-${i} "chown -R hadoop:hadoop /data/hadoop/hdfs/"; done

3.7 使用root在master安装hadoop 

3.7.1 解压缩hadoop

cd /tmp && tar xf hadoop-2.8.5.tar.gz -C /bdapps/

3.7.2 设置hadoop 软连接

cd /bdapps/ && ln -sv hadoop-2.8.5 hadoop

3.7.3 设置hadoop日志目录添加权限在每台服务器上执行

cd hadoop && mkdir logs && chmod g+w logs && chown -R hadoop:hadoop ./*

3.8 hadoop 配置文件调整

3.8.1 编辑 vim /bdapps/hadoop/etc/hadoop/core-site.xml 内容如下

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:8020</value>
    </property> 
</configuration>

3.8.2 编辑 vim /bdapps/hadoop/etc/hadoop/yarn-site.xml 内容如下

<configuration>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>
</configuration>

3.8.3 编辑 vim /bdapps/hadoop/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///data/hadoop/hdfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///data/hadoop/hdfs/dn</value>
    </property>
    <property>
        <name>fs.checkpoint.dir</name>
        <value>file:///data/hadoop/hdfs/snn</value>
    </property>
    <property>
        <name>fs.checkpoint.edits.dir</name>
        <value>file:///data/hadoop/hdfs/snn</value>
    </property>
</configuration>

3.8.4 编辑 vim /bdapps/hadoop/etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

备注:mapred-site.xml 文件为新建立文件,需要设置权限

chown -R hadoop:hadoop ./*

3.8.5 编辑 vim /bdapps/hadoop/etc/hadoop/vim slaves 告知hadoop集群从节点是哪些服务器 

dn-1
dn-2
dn-3

备注:删除locahost

3.8.6 hadoop相关配置文件说明可参考 https://zhuanlan.zhihu.com/p/25472769

3.9 数据节点安装hadoop

3.9.1 在每个数据节点解压缩hadoop

cd /tmp && tar xf hadoop-2.8.5.tar.gz -C /bdapps/ && ll /bdapps/

备注:也可以从主节点复制到每个节点。

3.9.2 在每个节点创建目录授权

cd /bdapps/ && ln -sv hadoop-2.8.5 hadoop && cd hadoop && mkdir logs && chmod g+w logs && chown -R hadoop:hadoop ./* && ll && ll /bdapps/

3.10 在master节点复制配置文件到每个数据节点

3.10.1 切换为hadoop用户进入配置文件目录

su - hadoop 
cd /bdapps/hadoop/etc/hadoop

3.10.2 复制配置文件到每台数据节点 

for i in 1 2 3; do scp ./* dn-${i}:/bdapps/hadoop/etc/hadoop/; done

3.10.3 检查配置文件是否复制到每个节点

for i in 1 2 3; do ssh hadoop@dn-${i} 'ls -l /bdapps/hadoop/etc/hadoop/' ; done

3.11 在master启动服务

3.11.1 格式化hdfs

su - hadoop 
hdfs namenode -format 

备注:namenode只在主节点格式化即可

出现如下提示表示格式化成功

Storage directory /data/hadoop/hdfs/nn has been successfully formatted.

3.11.2 格式化nn后可以查看数据

ll /data/hadoop/hdfs/nn/

出现current表示 格式化成功

3.11.3 启动hadoop NN SNN DN 服务 执行命令 

start-dfs.sh

Starting namenodes on [hadoop-master]
hadoop@hadoop-master's password:
hadoop-master: starting namenode, logging to /bdapps/hadoop/logs/hadoop-hadoop-namenode-hadoop-master.out
dn-2: starting datanode, logging to /bdapps/hadoop/logs/hadoop-hadoop-datanode-dn-2.out
dn-1: starting datanode, logging to /bdapps/hadoop/logs/hadoop-hadoop-datanode-dn-1.out
dn-3: starting datanode, logging to /bdapps/hadoop/logs/hadoop-hadoop-datanode-dn-3.out
Starting secondary namenodes [0.0.0.0]
The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established.
ECDSA key fingerprint is SHA256:N0oGIztp4e9xcieBKcP1uPzL3+a6qxH4m+TlifFqRVU.
ECDSA key fingerprint is MD5:3d:5c:f6:50:5f:f8:8c:33:be:34:c8:42:35:42:fb:8c.
Are you sure you want to continue connecting (yes/no)? yes
0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
hadoop@0.0.0.0's password:
0.0.0.0: starting secondarynamenode, logging to /bdapps/hadoop/logs/hadoop-hadoop-secondarynamenode-hadoop-master.out

3.11.4 启动hadoop RM 服务 执行命令

start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /bdapps/hadoop/logs/yarn-hadoop-resourcemanager-hadoop-master.out
dn-1: starting nodemanager, logging to /bdapps/hadoop/logs/yarn-hadoop-nodemanager-dn-1.out
dn-3: starting nodemanager, logging to /bdapps/hadoop/logs/yarn-hadoop-nodemanager-dn-3.out
dn-2: starting nodemanager, logging to /bdapps/hadoop/logs/yarn-hadoop-nodemanager-dn-2.out

至此,如果以上顺利完成hadoop集群已经可以正常运行了。

四 hadoop集群简单测试

4.1 hdfs相关测试

4.1.1 在hdfs内创建目录

hdfs dfs -mkdir /test

4.1.2上传文件到hdfs的/test目录下

hdfs dfs -put /etc/fstab /test/fstab

4.1.3 查看hdfs内的文件

hdfs dfs -ls -R /test

4.1.4 查看hdfs下的文件内容

hdfs dfs -cat /test/fstab

4.1.5 在dn节点查看hdfs将数据存到物理机什么位置上

ls /data/hadoop/hdfs/dn/current/BP-1789289483-172.16.5.13-1582193169051/current/finalized/subdir0/subdir0/

4.1.6 执行一个统计的测试程序

yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /test/fstab /test/fstab.out

4.1.7 等待分析结束查看分析结果

hdfs dfs -cat /test/fstab.out/part-r-00000

4.1.8 web方式 查看 hadoop hdfs 使用状态

http://140.143.211.224:50070/

4.1.9 web方式 查看 hadoop applications 使用查看

http://140.143.211.224:8088/

五 hadoop-cos配置

5.1.1 停止hadoop 服务

stop-dfs.sh && stop-yarn.sh
5.1.2 在master使用root用户上下载cos组件 cd /tmp && wget https://swpkg-1251908826.cos.ap-beijing.myqcloud.com/cos-hadoop/hadoop-cos-master.zip

5.1.3 解压缩cos组件 unzip hadoop-cos-master.zip

5.1.4 将hadoop-cos-maste dep 目录下的hadoop-cos-2.8.5-shaded.jar*, 拷贝到$HADOOP_HOME/share/hadoop/tools/lib下

cp /tmp/hadoop-cos-master/dep/hadoop-cos-2.8.5-shaded.jar /bdapps/hadoop/share/hadoop/tools/lib/

5.1.5 修改hadoop-cos-2.8.5-shaded.jar文件用户属主 

chown hadoop.hadoop /bdapps/hadoop/share/hadoop/tools/lib/hadoop-cos-2.8.5-shaded.jar

5.1.6 编辑vim /bdapps/hadoop/etc/hadoop/hadoop-env.sh 文件在文件末端增加如下内容 

for f in $HADOOP_HOME/share/hadoop/tools/lib/*.jar; do
  if [ "$HADOOP_CLASSPATH" ]; then
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$f
  else
    export HADOOP_CLASSPATH=$f
  fi
done

备注:详细内容请查询  https://cloud.tencent.com/document/product/436/6884

5.1.7 修改vim /bdapps/hadoop/etc/hadoop/core-site.xml 内容如下

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:8020</value>
    </property>
    <property>
        <name>test.fs.cosn.name</name>
        <value>cosn://log-1251908826</value>
    </property>
    <property>
        <name>fs.cosn.credentials.provider</name>
        <value>org.apache.hadoop.fs.auth.SimpleCredentialProvider</value>
        <description>
            This option allows the user to specify how to get the credentials.
            Comma-separated class names of credential provider classes which implement
            com.qcloud.cos.auth.COSCredentialsProvider:
            1.org.apache.hadoop.fs.auth.SimpleCredentialProvider: Obtain the secret id and secret key
            from fs.cosn.userinfo.secretId and fs.cosn.userinfo.secretKey in core-site.xml
            2.org.apache.hadoop.fs.auth.EnvironmentVariableCredentialProvider: Obtain the secret id and secret key               from system environment variables named COS_SECRET_ID and COS_SECRET_KEY
            If unspecified, the default order of credential providers is:
            1. org.apache.hadoop.fs.auth.SimpleCredentialProvider
            2. org.apache.hadoop.fs.auth.EnvironmentVariableCredentialProvider
        </description>
    </property>
    <property>
        <name>fs.cosn.userinfo.secretId</name>
        <value>AKID431rb9dpzy571</value>
        <description>Tencent Cloud Secret Id</description>
    </property>
    <property>
        <name>fs.cosn.userinfo.secretKey</name>
        <value>veJk040mT0LVebLxQipk</value>
        <description>Tencent Cloud Secret Key</description>
    </property>
    <property>
        <name>fs.cosn.bucket.region</name>
        <value>ap-beijing</value>
        <description>The region where the bucket is located.</description>
    </property>
    <property>
        <name>fs.cosn.impl</name>
        <value>org.apache.hadoop.fs.CosFileSystem</value>
        <description>The implementation class of the CosN Filesystem.</description>
    </property>
</configuration>

备注:secretId secretKey region bucket信息请替换为您自己的信息。

5.1.7 切换用户到hadoop 复制core-site.xml hadoop-env.sh hadoop-cos-2.8.5-shaded.jar 到每台节点服务器

su - hadoop
for i in 1 2 3; do scp /bdapps/hadoop/etc/hadoop/core-site.xml dn-${i}:/bdapps/hadoop/etc/hadoop/ ;done
for i in 1 2 3; do scp /bdapps/hadoop/etc/hadoop/hadoop-env.sh dn-${i}:/bdapps/hadoop/etc/hadoop/ ;done
for i in 1 2 3; do scp /bdapps/hadoop/share/hadoop/tools/lib/hadoop-cos-2.8.5-shaded.jar dn-${i}:/bdapps/hadoop/share/hadoop/tools/lib/ ;done

5.1.8 启动hadoop集群

start-dfs.sh && start-yarn.sh

5.1.9 在cos文件系统创建test目录

hdfs dfs -mkdir cosn://log-1251908826/test/

5.1.10 上传测试文件到cos上的test目录

hdfs dfs -put /etc/fstab cosn://log-1251908826/test/
hdfs dfs -put /etc/rc.d/init.d/functions cosn://log-1251908826/test/

5.1.11 查看cos上目录内是否有对应的文件

hdfs dfs -ls cosn://log-1251908826/test/

5.1.12 执行一个统计的测试程序从cos上读取文件,统计结果输出到cos

yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount cosn://log-1251908826/test/fstab cosn://log-1251908826/test/fstab1.out

yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount cosn://log-1251908826/test/functions cosn://log-1251908826/test/func1.out

5.1.13 查看两个文件计算结果

hdfs dfs -cat  cosn://log-1251908826/test/fstab1.out/part-r-00000
hdfs dfs -cat  cosn://log-1251908826/test/func1.out/part-r-00000

5.1.14  执行一个统计的测试程序从本地文件系统读取文件,统计结果输出到cos

yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /test/fstab cosn://log-1251908826/test/fstab2.out

至此hadoop已经可以与cos协作,hadoop可以将数据存储到cos上。

备注:腾讯云的秘钥和bucket id 记得修改为您自己的内容

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MTR工具使用说明文档

    Mtr是一个将“traceroute”和“ping”程序功能结合在一起的一个网络诊断工具。

    Hunter
  • 腾讯云V**网关对接StrongSwan开源V**软件配置手册

    ECS选择Linux centos 7.4 (服务器创建过程不进行演示请自行查找)

    Hunter
  • vim编辑模式粘贴内容格式混乱解决方案

    因vim设置了自动缩进,粘贴时可能会产生混乱,所以我们要粘贴内容到vim编辑的文件内需在交互模式下设置如下

    Hunter
  • HDFS的Shell操作(开发重点)

    bin/hadoop fs 具体命令 OR bin/hdfs dfs 具体命令 dfs是fs的实现类。

    用户7656790
  • 教你玩转Hadoop分布式集群搭建,进击大数据

    终于要开始玩大数据了,之前对haoop生态几乎没有太多的了解,现在赶鸭子上架,需要完全使用它来做数据中心,这是我的haoop第一篇文章,以后估计会写很多大数据相...

    用户1263954
  • 保姆级教程:还愁不会搭建伪分布式吗?(其实很简单)

    在上面三篇文章我们已经把基本环境搭建好了,也进行了相应的案例演示,下面我们将进入伪分布式的环境搭建,并运行实例,建议先看上面三篇文章在进行操作。看一百遍,不如手...

    用户7656790
  • hadoop伪分布式环境搭建

      由于博主之前没有从事过hadoop相关的开发工作,最近正好遇到一个hadoop相关的项目,于是决定自学研究一下,博主整理的东西绝对是最全最详细的,不要问为什...

    会说话的丶猫
  • Win7下Eclipse开发hadoop应用程序环境搭建

    在Linux下使用安装Eclipse来进行hadoop应用开发,但是大部分Java程序员对linux系统不是那么熟悉,所以需要在windows下开发hadoop...

    挖掘大数据
  • 【趣学程序】Hadoop安装运行

    GoogleFileSystem这是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,提供容错功能。

    趣学程序-shaofeer
  • Hadoop hdfs完全分布式搭建教程

    1、安装环境 ①、四台Linux CentOS6.7 系统   hostname                ipaddress              ...

    IT可乐

扫码关注云+社区

领取腾讯云代金券