我在 Windows 8.1 平台的沙盒(最近安装)中运行了 hortonworks HDP2.0。我需要学习如何让 giraph 与 HDP 2.0 一起工作。
我认为,giraph 目前没有默认安装 HDP 2.0。有人可以帮助我安装 giraph 并指出一些关于动手编码教程的资源。
我在 Windows 8.1 平台的沙盒(最近安装)中运行了 hortonworks HDP2.0。我需要学习如何让 giraph 与 HDP 2.0 一起工作。
我认为,giraph 目前没有默认安装 HDP 2.0。有人可以帮助我安装 giraph 并指出一些关于动手编码教程的资源。
尝试结合这个 hortonworks MapReduce 教程和Giraph 快速入门。
前者向您展示了如何在本地和虚拟机之间创建共享文件夹和复制文件。创建一个 Giraph jar(使用第二个链接),放置在 hue 主目录中,为其授予相关权限,并创建一个输入文件(如第一个链接中所述)。
创建 Giraph jar 时,您需要针对 Hadoop 2 进行编译——我使用mvn -Phadoop_2.0.0 package
Giraph 根目录中的命令进行了编译。
根据您使用的 Giraph 版本,您可能会遇到第二个链接中描述的运行问题,我发现
hadoop jar giraph.jar org.apache.giraph.GiraphRunner org.apache.giraph.examples.SimpleShortestPathsVertex -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/hue/tinygraph.txt -of org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/hue/output/shortestpaths -w 1
为我工作(注意使用 -of 而不是 -vof 指定输出格式和使用 SimpleShortestPathsVertex 而不是 SimpleShortestPathsComputation 的区别。
运行 jar 时遇到异常
java.lang.IllegalArgumentException: "checkLocalJobRunnerConfiguration: When using
"LocalJobRunner, you cannot run in split master / worker mode since there is only 1 task at a time!"
我通过添加行来修复
job.getConfiguration().setBoolean("giraph.SplitMasterWorker", false);
到 giraph-core 中的 org.apache.giraph.GiraphRunner.java。
我还遇到了 ZooKeeper 端口的问题,我在此处详细介绍了该问题。
希望这可以帮助!
我已经使用上面 FBUnicorn 的回答来编译关于如何在新部署的 Hortonworks (HDP 2.2) 实例之上安装 Giraph 1.2.0 的完整指南。
我已经使用 VirualBox 部署了 HDP,因为 VM 将具有开箱即用的 Internet 连接,而 VMware 等价物并非如此。
这些是几个步骤:
克隆 Giraph git 存储库
cd /usr/local/
sudo git clone https://github.com/apache/giraph.git
将用户添加到 CentOS
useradd -G hadoop hduser
sudo passwd hduser
sudo chown -R hduser:hadoop giraph
su - hduser
在 CentOS 上安装 Maven (mvn)(在本文的帮助下)
wget http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz
sudo tar xzf apache-maven-3.0.5-bin.tar.gz -C /usr/local
cd /usr/local
sudo ln -s apache-maven-3.0.5 maven
Maven 设置
sudo vi /etc/profile.d/maven.sh
插入
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}
注销并重新登录。确保版本 3 或更高版本的 maven 可用。
mvn -version
导出 Hadoop 和 Giraph 目录
vi $HOME/.bashrc
添加
export HADOOP_HOME=/usr/hdp/2.2.0.0-2041/hadoop
export GIRAPH_HOME=/usr/local/giraph
根据 FBUnicorn 答案修改 GraphRunner.java (/usr/local/giraph/giraph-core/src/main/java/org/apache/giraph)
job.getConfiguration().setBoolean("giraph.SplitMasterWorker", false);
在 boolean verbose = !cmd.hasOption('q');
编译 Giraph
source $HOME/.bashrc
cd $GIRAPH_HOME
mvn -Phadoop_2 -fae -DskipTests clean install
检查 jars 是否在 $GIRAPH_HOME/giraph-core/target/ 文件夹中生成
创建一个带有小图的测试示例
vi /tmp/tiny_graph.txt
插入
[0,0,[[1,1],[3,3]]]
[1,0,[[0,1],[2,2],[3,1]]]
[2,0,[[1,2],[4,4]]]
[3,0,[[0,3],[1,1],[4,4]]]
[4,0,[[3,4],[2,4]]]
创建 HDFS 文件夹:
hadoop fs -mkdir -p /user/hduser/input
将图形复制到 HDFS hadoop fs -copyFromLocal /tmp/tiny_graph.txt /user/hduser/input/tiny_graph.txt
检查该文件是否已进入 HDFS 存储库 hadoop fs -ls /user/hduser/input
处理 Giraph 图
hadoop jar /usr/local/giraph/giraph-examples/target/giraph-examples-1.2.0-SNAPSHOT-for-hadoop-2.5.1-jar-with-dependencies.jar org.apache.giraph.GiraphRunner org.apache.giraph.examples.SimpleShortestPathsComputation -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/hduser/input/tiny_graph.txt -vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/hduser/output/shortestpaths -w 1