如何在新的ubuntu示例上安装hadoop和pydoop

ssm49v7z  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(312)

我看到的大多数安装说明都很冗长。有没有一组类似于脚本的命令,我们可以在amazonec2上的ubuntu示例上执行来设置hadoop和pydoop?

xv8emn3q

xv8emn3q1#

创建一个ubuntu示例。我将我的设置为一个ubuntu14.04linux,在一个m3.medium spot示例上,有20gb的数据存储(终止时删除),所有端口都打开(为了安全起见)。 ssh 将下面的命令逐段复制粘贴到服务器中。

sudo apt-get -y update
sudo apt-get -y install default-jdk
ssh-keygen -t rsa -P ''                            # Press Enter when prompted

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# See http://www.apache.org/dyn/closer.cgi/hadoop/common/ for latest file version

wget http://download.nextag.com/apache/hadoop/common/current/hadoop-2.6.0.tar.gz
tar xfz hadoop-2.6.0.tar.gz

# Replace the folder/file names for your system

export HADOOP_PREFIX=/home/ubuntu/hadoop-2.6.0
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

配置hadoop


# Add these into the Hadoop env

cat >> $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh <<EOF
export JAVA_HOME=${JAVA_HOME}
export HADOOP_PREFIX=${HADOOP_PREFIX}
EOF

cat > $HADOOP_PREFIX/etc/hadoop/core-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
EOF

cat > $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
EOF

运行独立节点并向其中添加文件


# Format and start HDFS

$HADOOP_PREFIX/bin/hdfs namenode -format
$HADOOP_PREFIX/sbin/start-dfs.sh

# Create a folder

$HADOOP_PREFIX/bin/hdfs dfs -mkdir /user
$HADOOP_PREFIX/bin/hdfs dfs -mkdir /user/sample

# Copy input files into HDFS

$HADOOP_PREFIX/bin/hdfs dfs -put $HADOOP_PREFIX/etc/hadoop/*.xml /user/sample/

# Run example

$HADOOP_PREFIX/bin/hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep /user/sample /user/output 'dfs[a-z.]+'

安装pydoop

sudo apt-get -y install build-essential python-dev
sudo bash    # To avoid sudo pip install not geting the env variables
export HADOOP_HOME=/home/ubuntu/hadoop-2.6.0
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
pip install pydoop

使用以下python脚本测试pydoop:

import pydoop.hdfs
hdfs = pydoop.hdfs.hdfs()
hdfs.list_directory('/user/sample')

# This lists all files under /user/sample
eqoofvh9

eqoofvh92#

另一个解决方案是使用juju(ubuntu的服务编排框架)。
首先在标准计算机上安装juju客户端:

sudo add-apt-repository ppa:juju/stable
sudo apt-get update && sudo apt-get install juju-core

(此处还提供了有关macos和windows的说明)
然后生成一个配置文件

juju generate-config

并使用您首选的云凭据(aws、azure、gce…)对其进行修改。基于m3.medium的命名,我假设您使用aws,因此请遵循以下说明
注:上述操作只需执行一次。
现在启动

juju bootstrap amazon

部署一个gui(可选),就像网站上提供的演示一样

juju deploy --to 0 juju-gui && juju expose juju-gui

您将找到gui的url和密码:

juju api-endpoints | cut -f1 -d":"
cat ~/.juju/environments/amazon.jenv | grep pass

请注意,以上步骤是任何juju部署的预备步骤,并且可以在每次您想要旋转环境时重复使用。
现在是hadoop的用例。你有几个选择。
只需部署1个hadoop节点

juju deploy --constraints "cpu-cores=2 mem=4G root-disk=20G" hadoop

您可以使用跟踪部署

juju debug-log

并获取有关新示例的信息

juju status

这是部署hadoop所需的唯一命令(您可以将juju视为复杂系统apt的一种演变)
使用hdfs和mapreduce部署一个由3个节点组成的集群

juju deploy hadoop hadoop-master
juju deploy hadoop hadoop-slavecluster
juju add-unit -n 2 hadoop-slavecluster
juju add-relation hadoop-master:namenode hadoop-slavecluster:datanode
juju add-relation hadoop-master:resourcemanager hadoop-slavecluster:nodemanager

扩展使用(单独的hdfs和mapreduce,实验性)

juju deploy hadoop hdfs-namenode
juju deploy hadoop hdfs-datacluster
juju add-unit -n 2 hdfs-datacluster
juju add-relation hdfs-namenode:namenode hdfs-datacluster:datanode
juju deploy hadoop mapred-resourcemanager
juju deploy hadoop mapred-taskcluster
juju add-unit -n 2 mapred-taskcluster
juju add-relation mapred-resourcemanager:mapred-namenode hdfs-namenode:namenode
juju add-relation mapred-taskcluster:mapred-namenode hdfs-namenode:namenode
juju add-relation mapred-resourcemanager:resourcemanager mapred-taskcluster:nodemanager

对于pydoop,您必须像第一个答案中那样手动部署它(您可以通过“juju ssh”访问juju示例),或者您可以编写一个“charm”(juju学习如何部署pydoop的方法)。

相关问题