大数据集群搭建和使用之九——补:Eclipse开发环境

这个系列指南使用真实集群搭建环境,不是伪集群,用了三台腾讯云服务器

或者访问我的个人博客站点,链接

配置eclipse开发环境

以下环境适用于hadoop,storm,kafka开发,hbase和hive还没有测试

安装配置

  • Eclipse软件随意,我选取eclipse-java-mars-2-win32-x86_64
  • 必要的插件

    1. hadoop-eclipse-plugin-x.x.x.jar
      插件下载点这里,或者这里,区别为支持的版本不同。
    2. apache-maven-x.x.x-bin.zip
      下载地址点这里
      配置参考这个链接
    3. winutils.exe,hadoop.dll
      下载地址点这里
      将这两个文件放在C:\Windows\System32目录下。
  • 修改系统环境变量
    java环境配置参考这个链接,推荐使用jdk1.8即java8版本。
    System variables里添加HADOOP_HOME,指向hadoop压缩包地址(bin目录上一层),添加MAVEN_HOME(bin目录上一层),

  • 配置eclipse连接hadoop
    参考链接点这里

  • 建立java项目或者maven项目都需要正确放置如下文件

    1. core-site.xml
    2. hdfs-site.xml
    3. mapred-site.xml
    4. hbase-site.xml

    运行时如果出现权限问题 ,需要指定JVM用户名称,具体在run configuration里的arguments里面添加-DHADOOP_USER_NAME=root(因为云上的hadoop用户名为root)

  • 设置本地ip映射
    为了不再代码里使用过多的IP地址,可以采用修改windows中host文件的方式来设置ip映射,类似于云上修改/etc/cloud/template/hosts.rexxx的方式。

maven使用注意事项(建议使用Maven构建项目)

  • 指定用户设置settings.xml,路径设置在window->preferences->maven->user settings->global/user settings。为了避免依赖包下载失败,需要在settings.xml里设置镜像地址。settings.xml文件如下,好像阿里云的镜像已经不管用了。实际上使用的好像是中央仓库1或者2。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
     <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
     </mirror> 
          <!-- 中央仓库1 -->
     <mirror>
         <id>repo1</id>
         <mirrorOf>central</mirrorOf>
         <name>Human Readable Name for this Mirror.</name>
         <url>http://repo1.maven.org/maven2/</url>
     </mirror>
     <!-- 中央仓库2 -->
     <mirror>
         <id>repo2</id>
         <mirrorOf>central</mirrorOf>
         <name>Human Readable Name for this Mirror.</name>
         <url>http://repo2.maven.org/maven2/</url>
     </mirror>
  </mirrors>
  <profiles>
  </profiles>
</settings>
  • maven默认使用J2SE-1.5来构建项目,这和电脑上安装java8不一致,可以在项目pom文件中进行设置
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

此外,由于设置了别的构建版本,需要配置可执行jre目录。window->preferences->java->installed jres->excution environment,在这个选项卡里点击J2SE-1.5JavaSE1.8,在右侧选择相应的jre目录。

  • 在编写完pom.xml文件后,需要执行maven->update project命令来下载相关的jar包。如果出现了missing artifact xxx错误,请三步走,参考链接点这里

    1. 到报错的那个jar包的磁盘地址,看一下有没有lastupdated字样作为后缀的文件,如果有的话,删除该jar包整个文件夹,重新update project。
    2. 如果对应磁盘位置里没有上述文件,检查是否有对应的jar包,如果没有的话,到这里下载对应的jar包和pom文件,手动放到本地仓库中,然后update project。
    3. 如果上述两步没有用的话,百度谷歌看缘分。
  • 在添加了kafka依赖包之后,如果有一个叫kafka-avro-serializerxxx.jar的文件如果报错的话,解决方案点这里

  • 使用maven编译时,使用cmd进入项目位置,哪里有pom文件就cd到哪里,之后先执行mvn clean来清理项目,再使用mvn package进行打包。生成的jar包在项目的target文件夹里,不要使用开头有origin字样的jar包

  • 附一份可用的开发storm+kafka+hdfs的pom.xml,这个文件里需要注意以下几个地方:

    1. 使用maven-shade-plugin而不是maven-assembly-plugin来构建项目。原因看这里
    2. 对于hadoop,storm,kafka依赖项而言,指定版本尤为重要。特别注意的是,hadoop2.2,storm1.0,kafka0.10是非常重要的分水岭。之上和之下的版本尽量不要混用。
    3. 所有的dependency尽量使用provided作为scope参数,例如如果storm-kafka这一个dependency如果不使用provided,那么编译时将会出现错误:
      [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project maventest: Compilation failure: Compilation failure:
      [ERROR] /D:/EclipseWorkspace/maventest/src/main/java/cn/colony/cloud/stormhdfs/StormToHDFS.java:[17,34] package org.apache.storm.hdfs.bolt does not exist

    报错的编译插件为maven-compiler-plugin,和我们的环境没有半点关系,所以极难找错。(花了我两天时间)

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>cn.colony</groupId>
      <artifactId>maventest</artifactId>
      <version>1.0.0</version>
      <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>2.4.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <transformers>
                                    <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                    <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                        <mainClass>cn.colony.cloud.stormhdfs.MyKafkaTopology</mainClass>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
        <dependency>
            <groupId>org.apache.storm</groupId>
            <artifactId>storm-core</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.storm</groupId>
            <artifactId>storm-hbase</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.storm</groupId>
            <artifactId>storm-kafka-client</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.storm</groupId>
            <artifactId>storm-kafka</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>   
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.10</artifactId>
            <version>0.10.2.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>0.10.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.storm</groupId>
            <artifactId>storm-hdfs</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.8.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.8.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
      </dependencies>
    </project>

猜你喜欢

转载自blog.csdn.net/moquancsdn/article/details/81700467