2014-01-14 3 views
0

Я работаю над проектом в python, который начинает подавлять мои низкоуровневые окна, и я хотел попросить совета о том, как найти дополнительную вычислительную мощность I Думаю, мне нужно.Запустите скрипт python на amazon EC2 или другом сервере

Немного подробно о моем проекте: Я обрабатываю и анализирую довольно большую базу данных текста из Интернета. Примерно 10 000 файлов, каждый эквивалент которых составляет примерно 500 слов или около того (хотя и с большим разбросом по этому значению). Первым шагом является выбор определенных ключевых фраз и использование GenSim для проведения довольно простого анализа подобия. Это занимает мой компьютер, но он может справиться с этим, если я нежен. Во-вторых, как только я определил короткий список кандидатов, я отпечатываю отпечаток каждого документа кандидата, чтобы более точно оценить сходство. Для каждого файла требуется отпечаток пальца и сравнение над 2-10 другими файлами - так что это не сравнение n-to-n, которое потребует месяцев компьютерного времени, о котором я не думаю.

Это второй шаг, на котором мой компьютер начинает бороться. Я рассматривал возможность запуска сценария в среде EC2, но когда я начал читать об этом здесь, я увидел комментарий, который эффектно для этого требует уровня сложности linux sys admin. Я почти так же далеко от этого уровня сложности, поскольку любой член этого сайта может быть.

Так есть еще один вариант? Или получается довольно простой скрипт python, запущенный на ES2, не так сложно.

Ниже приведена часть сценария, которая кажется наиболее ресурсоемкой. Для каждого текстового файла он создает список отпечатков пальцев, выбирая определенные текстовые файлы из обрезки amdt_word_bags в соответствии с критериями в PossDupes_1 (оба из которых являются списками). Он использует модуль fingerprintgenerator, который я нашел здесь: https://github.com/kailashbuki/fingerprint.

fingerprints_hold=[] 
counter=0 
error_count=0 
for amdt, sims in zip(amdt_word_bags_trim, PossDupes_1): 
    counter+=1 
    if counter%100==0: 
     print counter  
    if len(sims)>1: 
     poss_sim=[sim for sim in sims if sim !=(counter-1)] 
     fpg_orig = FingerprintGenerator(input_string=amdt)   
     try: 
      fpg_orig.generate_fingerprints() 
      orig_prints=fpg_orig.fingerprints 
     except IndexError as s: 
      orig_prints=["small"] 
      print s 
      error_count+=1 
      print error_count 
     cand_text=[[cand for cand in amdt_word_bags_trim[num]] for num in poss_sim] 
     cand_text=[''.join(c) for c in cand_text] 
     fing_cands_hold=[] 
     for text in cand_text: 
      fpg_cands = FingerprintGenerator(input_string=text) 
      try: 
       fpg_cands.generate_fingerprints() 
       fing_cands_pre=[int(a[0]) for a in fpg_cands.fingerprints] 
       fing_cands_hold.append(fing_cands_pre)     
      except IndexError as s2: 
       fing_cands_hold.append('small cand') 
      except TypeError as s3: 
       fing_cands_hold.append("none") 
     fingerprints_hold.append([orig_prints, fing_cands_hold]) 
    else: fingerprints_hold.append("no potential matches") 
+0

ознакомьтесь с этим руководством (http://aameer.github.io/cloud-computing-101/) – Aameer

ответ

2

Как насчет использования эластичной карты Amazon (EMR). Это хаос Амазонки service, который в основном работает над EC2. Вы можете скопировать ваши файлы данных в AmazonS3, и ваш EMR-кластер возьмет данные оттуда. Вы также можете отправить свои результаты в файлы на Amazon S3.

При запуске кластера вы можете настроить количество экземпляров EC2, которые вы хотите использовать, и размер каждого экземпляра. Таким образом, вы можете настроить мощность процессора, в которой вы нуждаетесь. После того, как вы закончите свою работу, вы можете снести кластер, когда вы его не используете. (Избегайте его оплаты)

Вы также можете сделать все вышеперечисленное программно. Например, python я использую boto Amazon API, который довольно популярен.

Чтобы начать работу над написанием работ по сокращению python, вы можете найти несколько сообщений в Интернете, в которых объясняется, как это сделать. Вот пример: http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/

Надеюсь, что это поможет.

Смежные вопросы