Thứ năm, 19/03/2015 | 00:00 GMT+7

Cách cài đặt database Apache Accumulo NoSQL thân thiện với dữ liệu lớn trên Ubuntu 14.04

Apache Accumulo là một database NoSQL phân tán open-souce dựa trên BigTable của Google . Nó được sử dụng để thực hiện hiệu quả các hoạt động CRUD (Create Read Update Delete) trên các tập dữ liệu cực lớn (thường được gọi là Dữ liệu lớn). Accumulo được ưu tiên hơn các database phân tán tương tự khác (chẳng hạn như HBase hoặc CouchDB) nếu một dự án yêu cầu bảo mật chi tiết dưới dạng kiểm soát truy cập cấp tế bào.

Accumulo được xây dựng dựa trên phần mềm Apache khác. Accumulo đại diện cho dữ liệu của nó dưới dạng các cặp key-value và lưu trữ dữ liệu đó dưới dạng file trên HDFS (Hệ thống file phân tán Hadoop của Apache). Nó cũng sử dụng Apache ZooKeeper để đồng bộ hóa cài đặt giữa tất cả các quy trình của nó.

Trong hướng dẫn này, bạn sẽ học cách:

  • Cài đặt và cấu hình Apache HDFS và ZooKeeper: Các hệ thống này phải hoạt động trước khi khởi động Accumulo
  • Cài đặt và cấu hình version độc lập của Accumulo

Yêu cầu

Bạn cần những thứ sau:

  • Server Ubuntu 14.04 (tốt nhất là 32-bit)
  • Một user sudo
  • Ít nhất 2 GB dung lượng swap

Bước 1 - Cài đặt và cấu hình JDK 7

Accumulo, HDFS và ZooKeeper đều được viết bằng Java và cần một JVM (Máy ảo Java) để chạy. Vì vậy, hãy bắt đầu bằng cách cài đặt JDK.

Cập nhật index danh sách gói.

sudo apt-get update 

Cài đặt OpenJDK 7 bằng apt-get .

sudo apt-get install openjdk-7-jdk 

Sử dụng nano để chỉnh sửa file môi trường shell của bạn, .bashrc .

nano ~/.bashrc 

Thêm JAVA_HOME làm biến môi trường ở cuối file .

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386 

Lưu ý : Giá trị của JAVA_HOME có thể khác nhau tùy thuộc vào kiến trúc server của bạn. Ví dụ: trên server 64 bit, giá trị sẽ là /usr/lib/jvm/java-7-openjdk-amd64 . Bạn có thể xem đường dẫn chính xác bằng cách liệt kê nội dung của folder /usr/lib/jvm/ . Nếu đường dẫn của bạn khác với những gì được hiển thị ở đây, hãy đảm bảo bạn áp dụng các thay đổi thích hợp ở đây và ở nơi khác.

Lưu file và thoát khỏi nano . Cập nhật các biến môi trường của phiên hiện tại bằng lệnh :

. ~/.bashrc 

Chỉnh sửa file cấu hình java.security của JVM bằng nano .

sudo nano $JAVA_HOME/jre/lib/security/java.security 

Tìm kiếm tham số securerandom.source và thay đổi dòng để có dạng như sau:

securerandom.source=file:/dev/./urandom 

Lưu file và thoát khỏi nano . Thay đổi này là cần thiết để giảm thời gian khởi động của JVM. Không thực hiện thay đổi này có thể dẫn đến thời gian khởi động rất lâu trên hầu hết các server ảo.

Bước 2 - Cài đặt SSH

Hadoop cần SSH và Rsync để quản lý các daemon của nó. Cài đặt chúng bằng lệnh sau:

sudo apt-get install ssh rsync 

Bước 3 - Bật kết nối SSH không password

Hadoop sẽ có thể kết nối với server của bạn qua SSH mà không bị nhắc nhập password .

Tạo khóa RSA bằng ssh-keygen .

ssh-keygen -P '' 

Nhấn ENTER khi được yêu cầu , để chọn các giá trị mặc định.

Thêm khóa đã tạo vào file authorized_keys .

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

Các giá trị localhost0.0.0.0 nên được thêm vào danh sách các server đã biết. Cách dễ nhất để làm điều này là chạy lệnh ssh .

Hãy để ta thêm localhost trước.

ssh localhost 

Bạn sẽ được yêu cầu bởi một thông báo giống như sau:

The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is bf:01:63:5b:91:aa:35:db:ee:f4:7e:2d:36:e7:de:42. Are you sure you want to continue connecting (yes/no)? 

Nhập yes và nhấn ENTER .

Khi quá trình đăng nhập hoàn tất, hãy thoát phiên SSH con bằng lệnh :

exit 

Hãy để ta thêm 0.0.0.0 ngay bây giờ.

ssh 0.0.0.0 

Nhập yes và nhấn ENTER khi được yêu cầu .

, hãy thoát phiên SSH con bằng lệnh :

exit 

Cài đặt SSH hiện đã hoàn tất.

Bước 4 - Tạo folder download

Bạn sẽ download một vài file cho hướng dẫn này. Mặc dù không thực sự cần thiết nhưng bạn nên lưu trữ tất cả các bản download của bạn trong một folder riêng.

mkdir -p ~/Downloads 

Nhập folder .

cd ~/Downloads 

Bước 5 - Download Apache Hadoop

Tại thời điểm viết bài, version ổn định mới nhất của Hadoop là 2.6.0 . Download bằng wget .

wget "http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.6.0.tar.gz" 

Bước 6 - Download Apache ZooKeeper

Phiên bản ổn định mới nhất của ZooKeeper là 3.4.6 . Download bằng wget .

wget "http://www.eu.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz" 

Bước 7 - Download Apache Accumulo

Phiên bản ổn định mới nhất của Accumulo là 1.6.1 . Download bằng wget .

wget "http://www.eu.apache.org/dist/accumulo/1.6.1/accumulo-1.6.1-bin.tar.gz" 

Bước 8 - Tạo folder cài đặt

Tạo một folder để lưu trữ tất cả các cài đặt liên quan đến Accumulo của ta .

mkdir -p ~/Installs 

Nhập folder .

cd ~/Installs 

Bước 9 - Cài đặt và cấu hình Hadoop

Sử dụng lệnh tar để extract nội dung của hadoop-2.6.0-src.tar.gz .

tar -xvzf ~/Downloads/hadoop-2.6.0.tar.gz 

Lưu ý: Nếu bạn đã cài đặt một version khác của bất kỳ phần mềm này, vui lòng sử dụng version thích hợp trong tên file của bạn.

Sử dụng nano để mở hadoop-env.sh .

nano ~/Installs/hadoop-2.6.0/etc/hadoop/hadoop-env.sh 

Tìm dòng bắt đầu bằng export JAVA_HOME và thay đổi nó thành:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386 

Đảm bảo giá trị này giống với giá trị bạn đặt trong .bashrc .

Theo mặc định, Hadoop tạo ra rất nhiều bản ghi gỡ lỗi. Để dừng hành vi này, hãy tìm dòng bắt đầu bằng export HADOOP_OPTS và thay đổi nó thành:

export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true" 

Lưu và thoát.

Sử dụng nano để mở core-site.xml .

nano ~/Installs/hadoop-2.6.0/etc/hadoop/core-site.xml 

Thêm khối <property> có tên fs.defaultFS . Giá trị của nó phải trỏ đến tên server và cổng của nút tên (trong trường hợp của ta , đó là localhost và cổng mặc định 9000 ). Bỏ qua các comment , hãy chỉnh sửa file của bạn để nó trông giống như sau:

<?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> 

Lưu và thoát.

Sử dụng nano để mở hdfs-site.xml .

nano ~/Installs/hadoop-2.6.0/etc/hadoop/hdfs-site.xml 

Các thuộc tính sau đây cần được thêm vào file này:

  • dfs.replication : Con số này chỉ định số lần một khối được sao chép bởi Hadoop. Theo mặc định, Hadoop tạo 3 bản sao cho mỗi khối. Trong hướng dẫn này, hãy sử dụng giá trị 1 , vì ta không tạo một cụm.

  • dfs.name.dir : Điều này trỏ đến một vị trí trong hệ thống file nơi nút tên có thể lưu trữ bảng tên. Bạn cần thay đổi điều này vì Hadoop sử dụng /tmp theo mặc định. Hãy để ta sử dụng hdfs_storage/name để lưu bảng tên.

  • dfs.data.dir : Điều này trỏ đến một vị trí trong hệ thống file nơi nút dữ liệu sẽ lưu trữ các khối của nó. Bạn cần thay đổi điều này vì Hadoop sử dụng /tmp theo mặc định. Hãy để ta sử dụng hdfs_storage/data để lưu trữ các khối dữ liệu.

Bỏ qua các comment , sau khi thêm các thuộc tính này, file của bạn sẽ trông như thế này:

<?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>     <property>         <name>dfs.name.dir</name>         <value>hdfs_storage/name</value>     </property>     <property>         <name>dfs.data.dir</name>         <value>hdfs_storage/data</value>     </property> </configuration> 

Sử dụng nano để tạo một file mới có tên mapred-site.xml .

nano ~/Installs/hadoop-2.6.0/etc/hadoop/mapred-site.xml 

Thêm thuộc tính có tên mapred.job.tracker vào file này. Thuộc tính này chứa tên server và số cổng mà trình theo dõi công việc MapReduce chạy trên đó. Để cài đặt của ta , hãy sử dụng localhost và cổng mặc định 9001 .

Thêm nội dung sau vào file :

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration>      <property>          <name>mapred.job.tracker</name>          <value>localhost:9001</value>      </property> </configuration> 

Nhập folder cơ sở của Hadoop (điều này rất quan trọng vì Hadoop tạo folder hdfs_storage trong folder hiện tại).

cd ~/Installs/hadoop-2.6.0/ 

NameNode bây giờ có thể được khởi tạo bằng lệnh vào:

~/Installs/hadoop-2.6.0/bin/hdfs namenode -format 

Bạn sẽ thấy khá nhiều kết quả .

Tiếp theo, khởi động NameNode bằng lệnh :

~/Installs/hadoop-2.6.0/sbin/start-dfs.sh 

Chờ một hoặc hai phút để nó bắt đầu. Sau khi bắt đầu, bạn có thể sử dụng trình duyệt để truy cập http://<your-ip>:50070/ và duyệt qua giao diện web của NameNode.

Hadoop NameNode Web Interface

Xử lý sự cố

Nếu bạn không thể truy cập giao diện web, hãy kiểm tra xem NameNode có hoạt động hay không bằng cách sử dụng lệnh sau:

jps 

Đầu ra của bạn phải chứa ba quy trình sau cùng với quy trình Jps :

  • DataNode
  • NameNode
  • SecondaryNameNode

Nếu bạn thấy NameNode không xuất hiện trong kết quả , hãy thực hiện các bước sau. Nếu chúng không thực thi trong một khối, bạn có thể phải chạy chúng riêng biệt. Comment có trong dòng.

cd ~/Installs/hadoop-2.6.0/ ~/Installs/hadoop-2.6.0/sbin/stop-dfs.sh # Stop Hadoop's nodes rm -rf hdfs_storage # Delete the namenode data rm -rf /tmp/hadoop-* # Delete the temporary directories ~/Installs/hadoop-2.6.0/bin/hdfs namenode -format # Reformat the namenode 

Khởi động lại Hadoop bằng start-dfs.sh :

~/Installs/hadoop-2.6.0/sbin/start-dfs.sh 

Bạn có thể truy cập giao diện web ngay bây giờ.

Bước 10 - Cài đặt và cấu hình ZooKeeper

Nhập folder Installs .

cd ~/Installs 

Sử dụng tar để extract zookeeper-3.4.6.tar.gz .

tar -xvzf ~/Downloads/zookeeper-3.4.6.tar.gz 

Sao chép file ví dụ zoo_sample.cfg vào zoo.cfg .

cp ~/Installs/zookeeper-3.4.6/conf/zoo_sample.cfg ~/Installs/zookeeper-3.4.6/conf/zoo.cfg 

Cấu hình của ZooKeeper hiện đã hoàn tất. Khởi động ZooKeeper bằng lệnh :

~/Installs/zookeeper-3.4.6/bin/zkServer.sh start 

Bạn sẽ thấy kết quả giống như sau:

JMX enabled by default Using config: ~/Installs/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED 

Bước 11 - Cài đặt và cấu hình Accumulo

Bây giờ tất cả các phụ thuộc của nó đã được thỏa mãn, đã đến lúc bắt tay vào việc cài đặt Accumulo.

Nhập folder Installs .

cd ~/Installs 

Extract accumulo-1.6.1-bin.tar.gz bằng tar :

tar -xvzf ~/Downloads/accumulo-1.6.1-bin.tar.gz 

Accumulo đi kèm với các cấu hình mẫu cho server với nhiều kích thước bộ nhớ: 512 MB, 1 GB, 2 GB và 3 GB. Tôi sẽ sử dụng cấu hình cho 512 MB trong hướng dẫn này. Bạn có thể chọn một cấu hình khác nếu server của bạn có nhiều bộ nhớ hơn.

Sao chép các file cấu hình 512 MB vào folder conf .

cp ~/Installs/accumulo-1.6.1/conf/examples/512MB/standalone/* ~/Installs/accumulo-1.6.1/conf/ 

Sử dụng nano để chỉnh sửa lại môi trường shell của bạn, sử dụng file .bashrc .

nano ~/.bashrc 

Thêm các biến môi trường sau vào file này:

  • HADOOP_HOME: Đường dẫn đến cài đặt Hadoop
  • ZOOKEEPER_HOME: Đường dẫn đến cài đặt ZooKeeper

Thêm các dòng sau vào file của bạn:

export HADOOP_HOME=~/Installs/hadoop-2.6.0/ export ZOOKEEPER_HOME=~/Installs/zookeeper-3.4.6/ 

Lưu và thoát.

Cập nhật môi trường để các biến bạn đã thêm vào .bashrc có sẵn trong phiên hiện tại.

. ~/.bashrc 

Sử dụng nano để chỉnh sửa accumulo-env.sh .

nano ~/Installs/accumulo-1.6.1/conf/accumulo-env.sh 

Theo mặc định, màn hình HTTP của Accumulo chỉ liên kết với network interface local . Để có thể truy cập nó qua Internet, bạn phải đặt giá trị của ACCUMULO_MONITOR_BIND_ALL thành true .

Tìm dòng bắt đầu bằng export ACCUMULO_MONITOR_BIND_ALL và bỏ ghi chú. Nó sẽ giống như thế này:

export ACCUMULO_MONITOR_BIND_ALL="true" 

Lưu và thoát.

Sử dụng nano để chỉnh sửa accumulo-site.xml .

nano ~/Installs/accumulo-1.6.1/conf/accumulo-site.xml 

Các quy trình công nhân của Accumulo giao tiếp với nhau bằng khóa bí mật. Điều này sẽ được thay đổi thành một chuỗi an toàn. Tìm kiếm instance.secret thuộc tính và thay đổi giá trị của nó. Tôi sẽ sử dụng chuỗi này: PASS1234 . XML cho thuộc tính sẽ giống như sau:

<property>     <name>instance.secret</name>     <value>PASS1234</value>     <description>A secret unique to a given instance that all servers must know in order to communicate with one another.       Change it before initialization. To       change it later use ./bin/accumulo org.apache.accumulo.server.util.ChangeSecret --old [oldpasswd] --new [newpasswd],       and then update this file.     </description> </property> 

Tiếp theo, thêm một thuộc tính mới có tên instance.volumes . Giá trị của thuộc tính này chỉ định nơi Accumulo sẽ lưu trữ dữ liệu của nó trong HDFS. Hãy để ta lưu trữ dữ liệu trong folder /accumulo .

<property>     <name>instance.volumes</name>     <value>hdfs://localhost:9000/accumulo</value> </property> 

Tìm thuộc tính trace.token.property.password và đặt giá trị của nó thành một thứ gì đó an toàn. Hãy nhớ giá trị này vì bạn cần nó trong bước tiếp theo. Tôi sẽ đặt điều này thành mypassw .

  <property>     <name>trace.token.property.password</name>     <value>mypassw</value>   </property> 

Lưu và thoát.

Khởi tạo Accumulo.

~/Installs/accumulo-1.6.1/bin/accumulo init 

Bạn sẽ được yêu cầu nhập tên Phiên bản . Sử dụng bất kỳ tên nào bạn chọn. Tôi chọn DIGITAL_OCEAN .

Tiếp theo, bạn sẽ được yêu cầu nhập password . trace.token.property.password cùng một password mà bạn đã sử dụng cho thuộc tính trace.token.property.password .

Sau khi lệnh hoàn tất, bạn có thể khởi động Accumulo.

~/Installs/accumulo-1.6.1/bin/start-all.sh 

Bạn có thể thấy một vài cảnh báo đề xuất giá trị cao hơn cho các thông số hệ thống nhất định. Vì ta đang tạo một version rất nhỏ trong hướng dẫn này, bạn có thể bỏ qua những cảnh báo đó.

Sau khi khởi động xong, bạn có thể sử dụng trình duyệt để truy cập giao diện web của Accumulo tại http://<your-server-ip>:50095 .

Giao diện web Accumulo

Kết luận

Trong hướng dẫn này, bạn đã học cách cài đặt Apache Accumulo và tất cả các thành phần phụ thuộc vào Apache. Ta đã tạo một cài đặt rất đơn giản ngày hôm nay bằng cách sử dụng HDFS ở chế độ giả phân phối có thể chạy trên một server nhỏ. Để có hiệu suất tối ưu trong kịch bản production , HDFS nên chạy ở chế độ phân phối đầy đủ.

Trong các kịch bản production , các quy trình này cũng được khuyến khích triển khai trên các server có ít nhất 8GB RAM và 4 lõi xử lý trở lên để mỗi quy trình có thể sử dụng trên 2GB bộ nhớ và một lõi riêng biệt. Ngoài ra, bạn có thể triển khai các thành phần riêng biệt trên các server khác nhau.

Để biết thêm thông tin, hãy tham khảo hướng dẫn sử dụng của Apache Accumulo.


Tags:

Các tin trước

Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên CentOS 7 2015-03-19
Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên Ubuntu 14.04 2015-03-18
Cách cấu hình Apache bằng Ansible trên Ubuntu 14.04 2015-02-18
Apache vs Nginx: Cân nhắc thực tế 2015-01-28
Cách cài đặt một Apache, MySQL và PHP (FAMP) trên FreeBSD 10.1 2015-01-14
Cách cài đặt WordPress với Apache trên FreeBSD 10.1 2015-01-14
Cách triển khai ứng dụng Rails với Passenger và Apache trên Ubuntu 14.04 2014-11-21
Cách sử dụng JRuby để chạy ứng dụng Rails trên Apache Tomcat 7 và Ubuntu 14.04 2014-11-14
Cách cấu hình quyền truy cập WebDAV với Apache trên Ubuntu 14.04 2014-09-22
Cách cài đặt và bảo mật phpMyAdmin với Apache trên server CentOS 7 2014-08-07