使用Python在Ubuntu14.04上部署Hadoop2.7.7

使用Python在Ubuntu14.04上部署Hadoop

coding:utf-8

import os
import time

hadoop_environment_set = ‘’’#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin
export PATH= P A T H : PATH: PATH:HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME= H A D O O P H O M E e x p o r t H A D O O P C O M M O N H O M E = HADOOP_HOME export HADOOP_COMMON_HOME= HADOOPHOMEexportHADOOPCOMMONHOME=HADOOP_HOME
export HADOOP_HDFS_HOME= H A D O O P H O M E e x p o r t Y A R N H O M E = HADOOP_HOME export YARN_HOME= HADOOPHOMEexportYARNHOME=HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR= H A D O O P H O M E / l i b / n a t i v e e x p o r t H A D O O P O P T S = " − D j a v a . l i b r a r y . p a t h = HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path= HADOOPHOME/lib/nativeexportHADOOPOPTS="Djava.library.path=HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH= H A D O O P H O M E / l i b / n a t i v e : HADOOP_HOME/lib/native: HADOOPHOME/lib/native:JAVA_LIBRARY_PATH
#HADOOP VARIABLES END’’’
username = ‘hadoop’

class install_and_set_hadoop():
“”“安装配置Hadoop”""

def update_linux(self):
    '''更新Linux'''
    os.system('sudo apt-get update')

def create_hadoop_user(self):
    # 创建Hadoop用户
    command_list = ['sudo useradd %s' % username,
                    'sudo chown %s /home/%s' % (username, username),
                    'sudo passwd %s' % username,
                    'aaa123',
                    'aaa123',
                    'sudo adduser %s sudo' % username,
                    ]

    for i in command_list:
        os.system(i)

def install_ssh(self):
    command_list = ['sudo apt-get install openssh-server',
                    'Y',
                    "ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa",
                    'cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys'
                    ]
    for i in command_list:
        os.system(i)

def install_JDK(self):
    if os.path.exists("/usr/lib/jvm/java-7-openjdk-amd64"):
        print('The JAVA is exist.')
    else:
        command_list = ['sudo apt-get install openjdk-7-jdk',

                        ]

def download_and_install_hadoop(self):

    with open('./temporary.txt', 'w', encoding='utf-8')as f:
        f.write(hadoop_environment_set)

    command_list = ['wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz'
                    'sudo tar -zxvf hadoop-2.7.7.tar.gz',  # 解压
                    'sudo mv hadoop-2.7.7 /usr/local/hadoop',
                    'sudo chown -R %s:%s /usr/local/hadoop' % (username,username),
                    '/usr/local/hadoop/bin/hadoop',
                    'sudo cat temporary.txt >> ~/.bashrc',
                    'source ~/.bashrc'
                    ]

    for i in command_list:
        os.system(i)

def set_hadoop(self):
    # 1.core-site.xml
    if os.path.exists('/usr/local/hadoop/etc/hadoop/core-site.xml'):
        with open('/usr/local/hadoop/etc/hadoop/core-site.xml', 'r', encoding='utf-8')as f:
            a = f.read()
    if '<property>' not in a:
        a = a.replace('<configuration>',
                      '''<configuration>\n<property>\n<name>fs.default.name</name>\n<value>hdfs://localhost:9000</value>\n</property>\n''')

        with open('/usr/local/hadoop/etc/hadoop/core-site.xml', 'w', encoding='utf-8')as f:
            f.write(a)

    # 2.hdfs-site.xml
    os.mkdir('/usr/local/hadoop/hadoop_data/hdfs/namenode')
    os.mkdir('/usr/local/hadoop/hadoop_data/hdfs/datanode')
    if os.path.exists('/usr/local/hadoop/etc/hadoop/hdfs-site.xml'):
        with open('/usr/local/hadoop/etc/hadoop/hdfs-site.xml', 'r', encoding='utf-8')as f:
            a = f.read()
    if '<property>' not in a:
        a = a.replace('<configuration>',
                      '''<configuration>\n<property>\n<name>dfs.namenode.name.dir</name>\n<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>\n</property>\n<property>\n<name>dfs.datanode.data.dir</name>\n<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>\n</property>\n<property>\n<name>dfs.replication</name>\n<value>2</value>\n</property> ''')
        with open('/usr/local/hadoop/etc/hadoop/hdfs-site.xml', 'w', encoding='utf-8')as f:
            f.write(a)

    # 3.mapred-site.xml
    os.system('sudo cp etc/hadoop/mapred-site.xml.template  etc/hadoop/mapred-site.xml')
    time.sleep(0.1)
    if os.path.exists('/usr/local/hadoop/etc/hadoop/mapred-site.xml'):
        with open('/usr/local/hadoop/etc/hadoop/mapred-site.xml', 'r', encoding='utf-8')as f:
            a = f.read()
    if '<property>' not in a:
        a = a.replace('<configuration>',
                      '''<configuration>\n<property>\n<name>mapreduce.framework.name</name>     \n	<value>yarn</value>\n</property>''')

        with open('/usr/local/hadoop/etc/hadoop/mapred-site.xml', 'w', encoding='utf-8')as f:
            f.write(a)

    # 4.hdfs-yarn.xml
    if os.path.exists('/usr/local/hadoop/etc/hadoop/hdfs-yarn.xml'):
        with open('/usr/local/hadoop/etc/hadoop/hdfs-yarn.xml', 'r', encoding='utf-8')as f:
            a = f.read()
    if '<property>' not in a:
        a = a.replace('<configuration>', '''<configuration>\n<property>

yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
‘’’)

        with open('/usr/local/hadoop/etc/hadoop/hdfs-yarn.xml', 'w', encoding='utf-8')as f:
            f.write(a)

    os.system('chown -R %s:%s /usr/local/hadoop/hadoop_data/hdfs/*'%(username))
    os.system('sudo chown 777 /usr/local/hadoop/hadoop_data/hdfs/datanode')
    # # 最后:创建NameNode、DataNode目录
    # os.mkdir('/usr/local/hadoop/hadoop_data/hdfs/namenode')
    # os.mkdir('/usr/local/hadoop/hadoop_data/hdfs/datanode')
    # sudo chown 777 /usr/local/hadoop/hadoop_data/hdfs/datanode
    # chown -R hadoop:hadoop /usr/local/hadoop/hadoop_data/hdfs/*

def install(self):
    self.update_linux()
    self.create_hadoop_user()
    self.install_ssh()
    self.install_JDK()
    self.download_and_install_hadoop()
    self.set_hadoop()

install_and_set_hadoop().install()

‘’’
1.要输密码说明权限不够,/usr/local/hadoop已经设置过权限
好像是这两个文件夹的权限设置问题
sudo chown 777 /usr/local/hadoop/hadoop_data/hdfs/datanode
chown -R hadoop:hadoop /usr/local/hadoop/hadoop_data/hdfs/*
然后执行/usr/local/hadoop/sbin/start-all.sh
‘’’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值