在多节点YARN中运行Hello-samza
您必须通过遵循 hello-samza 教程,在单节点YARN中成功运行 hello-samza 项目。现在是时候在“真正的” YARN 网格(有多个节点)中运行 Samza 的工作。
设置多节点 YARN
如果您已经有多节点 YARN 集群(如 CDH5 集群),则可以跳过此设置部分。
基本YARN设置
1.将YARN 2.6下载到 / tmp 并解压缩。
cd /tmp
tar -xvf hadoop-2.6.1.tar.gz
cd hadoop-2.6.1
2.设置环境变量。
export HADOOP_YARN_HOME=$(pwd)
mkdir conf
export HADOOP_CONF_DIR=$HADOOP_YARN_HOME/conf
3.配置 YARN 设置文件。
cp ./etc/hadoop/yarn-site.xml conf
vi conf/yarn-site.xml
将以下属性添加到 yarn-site.xml 中:
<property>
<name>yarn.resourcemanager.hostname</name>
<!-- hostname that is accessible from all NMs -->
<value>yourHostname</value>
</property>
下载并添加 capacity-schedule.xml。
curl http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/resources/capacity-scheduler.xml?view=co > conf/capacity-scheduler.xml
为 YARN 设置 Http 文件系统
这些步骤的目标是配置 YARN 来读取 http 文件系统,因为我们将使用 Http 服务器部署 Samza 作业包。如果要使用 HDFS 部署 Samza 作业包,则可以跳过步骤4〜6,然后按照 从HDFS部署Samza作业
4.下载 Scala 包并解压缩。
cd /tmp
curl http://www.scala-lang.org/files/archive/scala-2.11.8.tgz > scala-2.11.8.tgz
tar -xvf scala-2.11.8.tgz
5.添加 Scala,其日志 jar 和 Samza 的 HttpFileSystem 实现。
cp /tmp/scala-2.11.8/lib/scala-compiler.jar $HADOOP_YARN_HOME/share/hadoop/hdfs/lib
cp /tmp/scala-2.11.8/lib/scala-library.jar $HADOOP_YARN_HOME/share/hadoop/hdfs/lib
curl -L http://search.maven.org/remotecontent?filepath=org/clapper/grizzled-slf4j_2.10/1.0.1/grizzled-slf4j_2.10-1.0.1.jar > $HADOOP_YARN_HOME/share/hadoop/hdfs/lib/grizzled-slf4j_2.10-1.0.1.jar
curl -L http://search.maven.org/remotecontent?filepath=org/apache/samza/samza-yarn_2.11/0.12.0/samza-yarn_2.11-0.12.0.jar > $HADOOP_YARN_HOME/share/hadoop/hdfs/lib/samza-yarn_2.11-0.12.0.jar
curl -L http://search.maven.org/remotecontent?filepath=org/apache/samza/samza-core_2.11/0.12.0/samza-core_2.11-0.12.0.jar > $HADOOP_YARN_HOME/share/hadoop/hdfs/lib/samza-core_2.11-0.12.0.jar
6.在 core-site.xml 中添加 http 配置(创建 core-site.xml 文件并添加内容)。
vi $HADOOP_YARN_HOME/conf/core-site.xml
添加以下代码:
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.http.impl</name>
<value>org.apache.samza.util.hadoop.HttpFileSystem</value>
</property>
</configuration>
将 Hadoop 文件分配给从站
7.基本上,您将主机中的 hadoop 文件复制到从机。(172.21.100.35,在我的情况下):
scp -r . 172.21.100.35:/tmp/hadoop-2.6.1
echo 172.21.100.35 > conf/slaves
sbin/start-yarn.sh
- 如果您收到“172.21.100.35:错误:未设置 JAVA HOME”,则需要在配置失败的机器上添加 conf / hadoop-env.sh 文件(172.21.100.35,in这种情况),它具有“export JAVA HOME = / export / apps / jdk / JDK-1 8 0 45”(或者JAVA HOME实际上在哪里)。
8.通过访问 http:// yourHostname:8088 / cluster / nodes 验证您的节点是否已启动。
部署 Samza Job
以下步骤与您在 hello-samza中看到 的完全相同。如果您已经这样做,您可能会跳过它们。
1.下载Samza并将其发布到Maven本地存储库。
cd /tmp
git clone http://git-wip-us.apache.org/repos/asf/samza.git
cd samza
./gradlew clean publishToMavenLocal
cd ..
2.下载 hello-samza 项目并更改作业属性文件。
git clone git://github.com/linkedin/hello-samza.git
cd hello-samza
vi src/main/config/wikipedia-feed.properties
将 yarn.package.path 属性更改为:
yarn.package.path=http://yourHostname:8000/target/hello-samza-0.12.0-dist.tar.gz
编译 hello-samza。
mvn clean package
mkdir -p deploy/samza
tar -xvf ./target/hello-samza-0.12.0-dist.tar.gz -C deploy/samza
4.将 Samza 工作包部署到 Http 服务器..
打开一个新的终端,并运行:
cd /tmp/hello-samza && python -m SimpleHTTPServer
返回到原始终端(不是运行HTTP服务器的终端):
deploy/samza/bin/run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-feed.properties
转到 http:// yourHostname:8088,找到维基百科的工作。单击 ApplicationMaster 链接以查看它正在运行。
恭喜!你现在在一个“真正的”YARN网格中运行 Samza 的工作!
更多建议: